C#调用URL接口方法

    xiaoxiao2021-11-29  22

    第一种方法:

    第一步:获取在Web.config中配置要请求的地址

    string url = System.Web.Configuration.WebConfigurationManager.AppSettings["url"];

    第二步:把字符串编码(编码详解)

     string allStr = System.Web.HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8) ;

    第三步:把参数转成byte   byte[] bufferB = Encoding.UTF8.GetBytes(allStr);

    第四步:构建HttpWebRequest,并发送 System.Net.ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); WebReq.Method = "POST"; WebReq.ContentType = "application/x-www-form-urlencoded"; WebReq.ContentLength = allStr.Length; Stream PostData = WebReq.GetRequestStream(); PostData.Write(bufferB, 0, bufferB.Length); PostData.Close();

    第五步:接收返回结果(解析返回的JSON) HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); StreamReader sr = new StreamReader(WebResp.GetResponseStream(), System.Text.Encoding.UTF8); string backstr = sr.ReadToEnd(); backstr = HttpUtility.UrlDecode(backstr); Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd());

    第二种方法:

    第一步---构建HttpWebRequest HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);                WebReq.ContentType = "application/json"; WebReq.Method = Method;

    第二步--写入参数

     WebReq.ContentLength = Encoding.UTF8.GetByteCount(param);  using (StreamWriter requestW = new StreamWriter(WebReq.GetRequestStream()))                      {                          requestW.Write(param);                      }

    第三步--获取返回的结果

    string backstr = null; using (HttpWebResponse response = (HttpWebResponse)WebReq.GetResponse())                 {                     StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);                     backstr = sr.ReadToEnd();                 }

    第三种通用:

    public static string MakeRequest(string url, string query_string, string cookie_string, string method, string protocol)         {             //cookie             //string cookie_string = null;             //if (cookie != null && cookie.Count > 0)             //{             //    string[] arr_cookies = new string[cookie.Count];             //    int i = 0;             //    foreach (string key in cookie.Keys)             //    {             //        arr_cookies[i] = key + "=" + cookie[key];             //        i++;             //    }             //    cookie_string = string.Join("; ", arr_cookies);             //}             //结果             string result = "";             //请求类             HttpWebRequest request = null;             //请求响应类             HttpWebResponse response = null;             //响应结果读取类             StreamReader reader = null;             //http连接数限制默认为2,多线程情况下可以增加该连接数,非多线程情况下可以注释掉此行代码             ServicePointManager.DefaultConnectionLimit = 500;             try             {                 if (method.Equals("get", StringComparison.OrdinalIgnoreCase))                 {                     if (url.IndexOf("?") > 0)                     {                         url = url + "&" + query_string;                     }                     else                     {                         url = url + "?" + query_string;                     }                     //如果是发送HTTPS请求                        if (protocol.Equals("https", StringComparison.OrdinalIgnoreCase))                     {                         request = WebRequest.Create(url) as HttpWebRequest;                         request.ProtocolVersion = HttpVersion.Version10;                     }                     else                     {                         request = WebRequest.Create(url) as HttpWebRequest;                     }                     request.Method = "GET";                     request.Timeout = 30000;                 }                 else                 {                     //如果是发送HTTPS请求                        if (protocol.Equals("https", StringComparison.OrdinalIgnoreCase))                     {                         request = WebRequest.Create(url) as HttpWebRequest;                         request.ProtocolVersion = HttpVersion.Version10;                     }                     else                     {                         request = WebRequest.Create(url) as HttpWebRequest;                     }                     //去掉“Expect: 100-Continue”请求头,不然会引起post(417) expectation failed                     ServicePointManager.Expect100Continue = false;                     request.Method = "POST";                     request.ContentType = "application/x-www-form-urlencoded";                     request.Timeout = 30000;                     //POST数据                        byte[] data = Encoding.UTF8.GetBytes(query_string);                     using (Stream stream = request.GetRequestStream())                     {                         stream.Write(data, 0, data.Length);                     }                 }                 //cookie                 if (!string.IsNullOrEmpty(cookie_string))                 {                     request.Headers.Add("Cookie", cookie_string);                 }                 //response                 response = (HttpWebResponse)request.GetResponse();                 reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);                 //return                 result = reader.ReadToEnd();             }             finally             {                 if (request != null)                 {                     request.Abort();                 }                 if (reader != null)                 {                     reader.Close();                     reader.Dispose();                 }                 if (response != null)                 {                     response.Close();                 }             }             return result;         }

    转载请注明原文地址: https://ju.6miu.com/read-678584.html

    最新回复(0)