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

有时使用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;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值