手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >HttpWebRequest的常见错误使用TcpClient可避免
HttpWebRequest的常见错误使用TcpClient可避免
摘要:有时使用HttpWebRequest对象会出现错误,总结有三种:1、System.Net.WebException:服务器提交了协议冲突.S...

有时使用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.1rn", "GET", URI.PathAndQuery);

RequestHeaders.AppendFormat("Connection:closern");

RequestHeaders.AppendFormat("Host:{0}rn", URI.Host);

RequestHeaders.AppendFormat("Accept:*/*rn");

RequestHeaders.AppendFormat("Accept-Language:zh-cnrn");

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)rnrn");

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可避免】相关文章:

asp.net 备份和恢复数据库的方法

使用HttpWebRequest向网站模拟上传数据

WEB上调用HttpWebRequest奇怪问题的解决方法

ewebeditor在.net的使用方法

服务器读取EXCEL不安装OFFICE如何实现

用asp.net c# HttpWebRequest获取网页源代码

Microsoft SQL Server 2005 Express 远程访问设置详述,100%成功篇

asp.net开发微信公众平台之获取用户消息并处理

asp.net Repeater中使用if的代码

asp.net Repeater绑定时使用函数

精品推荐
分类导航