本文共 1255 字,大约阅读时间需要 4 分钟。
有时使用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; }
转载地址:http://yztsi.baihongyu.com/