我正在使用httpwebrequest和httpwebresponse分别发送请求和获取响应。 出于某种原因,在收到响应之前我的连接已关闭。
这是我的代码:
WebRequest webRequest = WebRequest.Create (uri);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes (parameters);
Stream os = null;
try
{ // send the Post
webRequest.ContentLength = bytes.Length; //Count bytes to send
os = webRequest.GetRequestStream();
os.Write (bytes, 0, bytes.Length); //Send it
}
catch (WebException ex)
{
MessageBox.Show ( ex.Message, "HttpPost: Request error",
MessageBoxButtons.OK, MessageBoxIcon.Error );
}
try
{ // get the response
WebResponse webResponse = webRequest.GetResponse();
if (webResponse == null)
{ return null; }
StreamReader sr = new StreamReader (webResponse.GetResponseStream());
return sr.ReadToEnd ().Trim ();
}
catch (WebException ex)
{
MessageBox.Show ( ex.Message, "HttpPost: Response error",
MessageBoxButtons.OK, MessageBoxIcon.Error );
}
return null;
}
错误:
答案 0 :(得分:1)
默认情况下,如果您使用HTTP / 1.1协议,则假定连接保持活动状态,除非服务器决定另外指示(使用Connection:close标头)。
在您的情况下,您有一台服务器拒绝请求500错误。你应该调查为什么会这样。你不应该担心连接:此时关闭标题。即使服务器关闭连接,客户端也会在下次打开新连接时正常处理。
总而言之,来自服务器的500响应不是由于连接被关闭。这是因为服务器不喜欢你发送的请求。
答案 1 :(得分:0)
如果是会话超时错误(我看不到错误消息),您应该在Web服务器或J2EE服务器中具有如下配置参数。
以下是来自tomcat web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>