第一种方法:
第一步:获取在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