HttpWebRequest的常见错误使用TcpClient可避免

决不能习惯失败,因为你要知道,身体的疲惫,不是真正的疲惫;精神上的疲惫,才是真的劳累。
有时使用HttpWebRequest对象会出现错误,总结有三种:
1、System.Net.WebException: 服务器提交了协议冲突. Section=ResponseStatusLine
2、System.Net.WebException: 基础连接已经关闭: 连接被意外关闭。
3、System.Net.ProtocolViolationException: 无法发送具有此谓词类型的内容正文。
使用TcpClient对象搞定
 
private string GetHTMLTCP(string URL)
{
string strHTML = "";//用来保存获得的HTML代码
TcpClient clientSocket = new TcpClient();
Uri URI = new Uri(URL);
clientSocket.Connect(URI.Host, URI.Port);
StringBuilder RequestHeaders = new StringBuilder();//用来保存HTML协议头部信息
RequestHeaders.AppendFormat("{0} {1} HTTP/1.1\r\n", "GET", URI.PathAndQuery);
RequestHeaders.AppendFormat("Connection:close\r\n");
RequestHeaders.AppendFormat("Host:{0}\r\n", URI.Host);
RequestHeaders.AppendFormat("Accept:*/*\r\n");
RequestHeaders.AppendFormat("Accept-Language:zh-cn\r\n");
RequestHeaders.AppendFormat("User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\r\n\r\n");
Encoding encoding = Encoding.Default;
byte[] request = encoding.GetBytes(RequestHeaders.ToString());
clientSocket.Client.Send(request);
//获取要保存的网络流
Stream readStream = clientSocket.GetStream();
StreamReader sr = new StreamReader(readStream, Encoding.Default);
strHTML = sr.ReadToEnd();
readStream.Close();
clientSocket.Close();
return strHTML;
}

使用 HttpWebRequest请求页面
 
///
/// 获取html源码
///
///
///
///
static string GetHTML(string url, string param)
{
try
{
Uri uri = new Uri(url);
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
myReq.Headers.Add("Accept-Encoding", "gzip,deflate");//sdch
byte[] byData = Encoding.Default.GetBytes(param);
myReq.Method = "post";
myReq.ContentLength = byData.Length;
Stream reqStrem = myReq.GetRequestStream();
reqStrem.Write(byData, 0, byData.Length);
reqStrem.Close();
HttpWebResponse result = (HttpWebResponse)myReq.GetResponse();
Stream recStream = result.GetResponseStream();
//如果是Gzip方式则需要解压
recStream = new GZipStream(recStream, CompressionMode.Decompress);
StreamReader redStream = new StreamReader(recStream, System.Text.Encoding.Default);
string strHTML = redStream.ReadToEnd();
redStream.Close();
recStream.Close();
result.Close();
return strHTML;
}
catch (Exception)
{
return "";
}
}

以上就是HttpWebRequest的常见错误使用TcpClient可避免。对知识的渴求决定了一个人能够取得多大的成功,因为读书使思想成熟,而任何伟大的成功都源于思想。知识是精神食粮,它能使人更加充实。热爱读书吧,从书中了解世界,了解自己;努力学习吧,因为学习使人进步,逐步走向成功。更多关于HttpWebRequest的常见错误使用TcpClient可避免请关注haodaima.com其它相关文章!

以下您可能有感兴趣的文章: