http GET() 、POST() 方法
public class HttpHelp
{
public static string HttpGet(string url)
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
public static string HttpPost(string Url, string postDataStr)
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
Encoding encoding = Encoding.GetEncoding("UTF-8");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "post";
request.ContentType = "application/json";
byte[] buffer = encoding.GetBytes(postDataStr);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
string result = reader.ReadToEnd();
return result;
}
public static string HttpPostMultipartFormData(string url, NameValueCollection kVDatas, string method = WebRequestMethods.Http.Post, string encoding = "UTF-8", int timeOut = -1)
{
string resultStr = "";
try
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = Encoding.GetEncoding(encoding).GetBytes("\r\n--" + boundary + "\r\n");
byte[] endbytes = Encoding.GetEncoding(encoding).GetBytes("\r\n--" + boundary + "--\r\n");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = method;
request.KeepAlive = true;
request.Timeout = timeOut;
using (Stream stream = request.GetRequestStream())
{
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
if (kVDatas != null)
{
foreach (string key in kVDatas.Keys)
{
stream.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, kVDatas[key]);
byte[] formitembytes = Encoding.GetEncoding(encoding).GetBytes(formitem);
stream.Write(formitembytes, 0, formitembytes.Length);
}
}
stream.Write(endbytes, 0, endbytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
{
resultStr = stream.ReadToEnd();
}
}
}
catch (WebException ex)
{
var errorSr = new StreamReader(ex.Response.GetResponseStream());
resultStr = errorSr.ReadToEnd();
}
return resultStr;
}
}
GET方法含Body请求体 (一般情况不建议:–HTTP 标准不允许 GET 请求包含请求体)
public static string HttpGet(string url, string postDataStr, Dictionary<string, string> headersDic)
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
request.Content = new StringContent(postDataStr, Encoding.UTF8, "application/json");
foreach (var item in headersDic)
{
request.Headers.Add(item.Key, item.Value);
}
HttpClient client = new HttpClient();
HttpResponseMessage response = client.SendAsync(request).Result;
response.EnsureSuccessStatusCode();
string responseBody = response.Content.ReadAsStringAsync().Result;
return responseBody;
}
使用POST() 获取网络资源
dynamic body = new
{
data_item_type = dataItemType,
query_date = date,
};
string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(body);
string strRet = HttpHelp.HttpPost("http://127.0.0.1/MW_EMS/API/SyncData", strJson);
var oRet = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(strRet);
附下载网络资源文件
string strURL="http://127.0.0.1/123.doc";
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strURL);
request.Timeout = _TimeOut;
request.ReadWriteTimeout = _TimeOut;
using (Stream stream = request.GetResponse().GetResponseStream())
{
using (FileStream fs = File.Create("D:\File\hello.doc"))
{
byte[] bytes = new byte[102400];
int n = 1;
while (n > 0)
{
n = stream.Read(bytes, 0, 10240);
fs.Write(bytes, 0, n);
}
}
}