C#调用Http接口(Json数据格式)
最近因为需求用C#封装了一个接口来调用Http的接口
在这里简单的总结一下用到的东西
HttpWebRequest
对URL发出Http的请求
有几个参数会用到
- Timeout 用来设置超时值
- Method 设置请求的方法
- ContentType 设置Http标头的值
Http协议把请求分成三部分
- 请求行(Headers)
- 请求头(ContentType)
- 消息主体(body)
通过设置标头的值 可以决定传输数据的编码方式
设置请求的方法可以实现各种操作
在这里我就只提到我用到的部分
Http请求方法
public enum ExcuteType { GET, POST, DELETE, }
GET 请求指定的页面信息 返回实体主体
POST 提交数据 可能会导致资源的建立和已有资源的修改
DELETE 请求服务器删除指定的页面
ContentType
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
后两个大家应该都认识 前两个对我来说是比较陌生的
总之前两个也都是比较常用的POST提交数据的方式
我这里因为接口要求 所以统一用了Json
代码实现
public static string HttpResponse (string url, string body, int timeout, string userAgent, ExcuteType excuteType) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Timeout = timeout; request.Method = excuteType.ToString(); request.ContentType = "application/json"; request.UserAgent = userAgent; if (body != null) { byte[] jsonBody = Encoding.UTF8.GetBytes(body); request.ContentLength = jsonBody.Length; request.GetRequestStream().Write(jsonBody, 0, jsonBody.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader streamReader = new StreamReader(response.GetResponseStream()); string responseContent = streamReader.ReadToEnd(); response.Close(); streamReader.Close(); return responseContent; }
具体调用的时候
传入url 和要发送的数据
如果请求方式不是POST 数据是可以为空的
代理(userAgent)的话在这里不考虑 延时可以根据情况填
string res = HttpResponse(url, body, 3000, null, ExcuteType.DELETE);
因为传回来的是json格式的数据 所以怎么解析就看你用什么解析库了
这里我是直接用unity原生的JsonUtility
if (res != null) { backBody = JsonUtility.FromJson<BackBody>(res); }
BackBody就是用于解析Json数据的类
记得给类加上可序列化的特性
[Serializable]
之后就可以对拿到的数据进行处理了