• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 "";
    }
    }
    您可能感兴趣的文章:
    • C#中HttpWebRequest的用法详解
    • HttpWebRequest和HttpWebResponse用法小结
    • C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法
    • HttpWebRequest出错.Section=ResponseHeader Detail=CR
    • .net core并发请求发送HttpWebRequest的坑解决
    上一篇:使用ASP.NET MVC 4 Async Action+jQuery实现消息通知机制的实现代码
    下一篇:asp.net中Session缓存与Cache缓存的区别分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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