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]

之后就可以对拿到的数据进行处理了

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注