HttpWebResponse始终为空

5

我有一个方法可以进行HTTP POST请求。

我用try catch语句调用这个方法,像这样:

try
{
   returnString = MakePost(gatewayEnpoint, data);
   return returnString;
}
catch (System.Net.WebException ex)
{
   var response = (HttpWebResponse)ex.Response;
   if (response.StatusCode != HttpStatusCode.RequestTimeout || response.StatusCode != HttpStatusCode.InternalServerError)
   {
       return ex.Message.ToString();
   }
}

但是response总是为空。

我该如何处理HTTP异常?我需要状态码。

谢谢。


1
你得到了什么异常?例如,如果无法连接到远程服务器,则不会有响应。 - Kolja
分享异常的详细信息,您得到了什么状态码...还要分享MakePost方法...如果服务器端在您的控制下,客户端是否到达那里? - Adil
1个回答

6
如果客户端未能成功连接服务器,则不会有响应。
仅当出现404状态代码等情况时,才会有响应。
如果您始终未能获得响应,则可能犯了其他错误(例如尝试连接不存在的服务器)。
顺便提一下,我强烈建议您不要像现在这样以相同的方式返回成功和错误情况。请改进此处。

1
在我的客户网络中,我遇到了同样的问题。HTTP错误响应为空。Wireshark确认我收到了500内部服务器错误,但仍然没有响应。使用相同的客户端服务器与我的客户端(不同的网络),我得到了有效的错误响应。有关客户端(Windows 7)是否阻止HTTP错误响应并将其设置为null的任何想法(防火墙/ .Net库已安装)?请帮忙。 - Kanagavelu Sugumar
@KanagaveluSugumar:你是在特别讨论WebException中的响应吗?我不知道会导致这种情况。 - Jon Skeet
是的 Jon。我在 WebException 中得到了 null 响应。 - Kanagavelu Sugumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接