C# HttpWebRequest遇到的问题与总结
HttpWebRequest
刚刚接触这一方面的东西,HttpWebRequest要做一个请求的接口。在这中间遇到的一些问题和总结
这是一个小白踩的坑,流的泪啊。
要注意的有很多,一一列出来。
1.请求类型与请求的数据的类型要统一?
有时候提交类型为“appclition/x-www-form-urlencoded”,但是我给的数据是json格式的,有时候好像没问题,但大部分时候会出错?
请求头的设置也要注意,还有如果这些都没问题。但是还是请求不到的话可以换另一种方式Restsharp,这种是把数据放body里面?跟HttpWebRequest有点不一样?
2.设置请求头的一些参数设置,比如一些token什么的。在需要soap类型的时候要在请求头加上“(“SOAPAction”, “application/soap+xml”)”
/// <summary>
///
/// </summary>
/// <param name="headers">请求头</param>
/// <param name="Data">数据</param>
/// <param name="contentType">请求类型</param>
/// <param name="url">请求地址</param>
/// <param name="method">提交方式</param>
/// <returns></returns>
public static string http(NameValueCollection headers = null,string Data = null,string contentType = "appliction/json",string url =null,string method="POST")
{
NameValueCollection Headers = new NameValueCollection();
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream stream = null;
StreamReader reader = null;
byte[] bs = Encoding.Default.GetBytes(Data);
request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add(headers );//请求头
request.Method = method;//请求方式
request.ContentType= contentType;
request.Timeout = 1000;//请求超时时间
request.ContentLength =bs.LongLength;
using (Stream st = request.GetRequestStream())
{
st.Write(bs, 0, bs.Length);
}
response = request.GetResponse() as HttpWebResponse;
stream = response.GetResponseStream();
reader = new StreamReader(stream);
string html = reader.ReadToEnd();
return html;
}