所有分给完再次请高手赐教。HttpWebRequest.Keep-Alive问题

qugui 2007-03-27 01:42:53
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive=true;

在post数据的时候并不出现Connection: Keep-Alive。
MSDN给出的例子如下:

但运行到 myHttpWebRequest2.Connection="Close";的时候出错,System.ArgumentException: 此标头必须用合适的属性进行修改。

请高手赐教是否还有其它方法设置req.Connection,使其在post数据的时候能够在header里出现Connection: Keep-Alive

using System;
using System.IO;
using System.Net;
using System.Text;


class HttpWebRequest_Connection
{
static void Main()
{
try
{

// Create a new HttpWebRequest object.Make sure that
// a default proxy is set if you are behind a fure wall.
HttpWebRequest myHttpWebRequest1 =
(HttpWebRequest)WebRequest.Create("http://www.contoso.com");

myHttpWebRequest1.KeepAlive=false;
// Assign the response object of HttpWebRequest to a HttpWebResponse variable.
HttpWebResponse myHttpWebResponse1 =
(HttpWebResponse)myHttpWebRequest1.GetResponse();

Console.WriteLine("\nThe HTTP request Headers for the first request are: \n{0}",myHttpWebRequest1.Headers);
Console.WriteLine("Press Enter Key to Continue..........");
Console.Read();

Stream streamResponse=myHttpWebResponse1.GetResponseStream();
StreamReader streamRead = new StreamReader( streamResponse );
Char[] readBuff = new Char[256];
int count = streamRead.Read( readBuff, 0, 256 );
Console.WriteLine("The contents of the Html page are.......\n");
while (count > 0)
{
String outputData = new String(readBuff, 0, count);
Console.Write(outputData);
count = streamRead.Read(readBuff, 0, 256);
}
Console.WriteLine();
// Close the Stream object.
streamResponse.Close();
streamRead.Close();
// Release the resources held by response object.
myHttpWebResponse1.Close();
// Create a new HttpWebRequest object for the specified Uri.
HttpWebRequest myHttpWebRequest2 =
(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
myHttpWebRequest2.Connection="Close";
// Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
HttpWebResponse myHttpWebResponse2 =
(HttpWebResponse)myHttpWebRequest2.GetResponse();
// Release the resources held by response object.
myHttpWebResponse2.Close();
Console.WriteLine("\nThe Http RequestHeaders are \n{0}",myHttpWebRequest2.Headers);
Console.WriteLine("\nPress 'Enter' Key to Continue.........");
Console.Read();
}
catch(ArgumentException e)
{
Console.WriteLine("\nThe second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'");
Console.WriteLine("\n{0}",e.Message);
}
catch(WebException e)
{
Console.WriteLine("WebException raised!");
Console.WriteLine("\n{0}",e.Message);
Console.WriteLine("\n{0}",e.Status);
}
catch(Exception e)
{
Console.WriteLine("Exception raised!");
Console.WriteLine("Source :{0} " , e.Source);
Console.WriteLine("Message :{0} " , e.Message);
}
}
}
...全文
922 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
科技超越了你 2009-03-02
  • 打赏
  • 举报
回复
顶顶顶。。。。。。我也碰到一样的问题,搞了几天了都解决不了。。。。
怎么设置KeepAlive = true 都没用,发送的标头里就是没有 Connection: Keep-Alive

唉,高手指点啊。。。。
qq4004229 2009-03-02
  • 打赏
  • 举报
回复
一语惊醒梦中人啊..
最关健的地方在这里请看:


myHttpWebRequest1.timeout=5000;


你设一个超时的时间段就OK了


悔说话的哑巴 2009-03-02
  • 打赏
  • 举报
回复
这个是域名转换的问题吧?
hertcloud 2007-03-27
  • 打赏
  • 举报
回复
试了下 将http://www.contoso.com 换成 http://www.163.com
可以得到

http://www.contoso.com 实际上只是一个域名转向到了http://www.microsoft.com/en/us/default.aspx
如果换成
(HttpWebRequest)WebRequest.Create("http://www.microsoft.com/en/us/default.aspx");
也是正确的.



qugui 2007-03-27
  • 打赏
  • 举报
回复
我设置了myHttpWebRequest2.KeepAlive = true;但在POST数据的时候就没有Connection:Keep-Alive了
hertcloud 2007-03-27
  • 打赏
  • 举报
回复
请求将 Connection 属性作为 ConnectionHTTP 标头发送到 Internet 资源。
如果 KeepAlive 属性的值为 true,则值“Keep-alive”会追加到 Connection 标头的最后。

myHttpWebRequest2.KeepAlive = true;
//myHttpWebRequest2.Connection = "Close";
阿Deee 2007-03-27
  • 打赏
  • 举报
回复
占上先
qugui 2007-03-27
  • 打赏
  • 举报
回复
没有什么影响,就是想构成和IE一样的header
python二级题库 2007-03-27
  • 打赏
  • 举报
回复
頂﹗頂﹗頂﹗
Red_angelX 2007-03-27
  • 打赏
  • 举报
回复
我想知道不出现KeepAlive对程序有影响吗?
我记得不加KeepAlive访问页面也没有问题的
csShooter 2007-03-27
  • 打赏
  • 举报
回复
先Up
CathySun118 2007-03-27
  • 打赏
  • 举报
回复
友情帮顶

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧