源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-11-19 03:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:HttpWebRequest的常见错误使用TcpClient可避免
有时使用HttpWebRequest对象会出现错误,总结有三种: 1、System.Net.WebException: 服务器提交了协议冲突. Section=ResponseStatusLine 2、System.Net.WebException: 基础连接已经关闭: 连接被意外关闭。 3、System.Net.ProtocolViolationException: 无法发送具有此谓词类型的内容正文。 [b]使用TcpClient对象搞定[/b]:
[u]复制代码[/u] 代码如下:
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请求页面
[u]复制代码[/u] 代码如下:
/// /// 获取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 ""; } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部