C#调用URL接口方法

第一种方法:

第一步:获取在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;
        }

--转自 http://blog.csdn.net/lijingrong_ljr/article/details/53214729

第一种方法:

第一步:获取在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;
        }

--转自 http://blog.csdn.net/lijingrong_ljr/article/details/53214729

猜你喜欢

转载自blog.csdn.net/github_37830343/article/details/78960753