既然您说 HttpListener 用于代理服务,那么我猜您正在使用 HttpWebRequest 向堆栈中的下一个服务发出出站请求。
302 状态代码导致 HttpWebRequest 引发 WebException 类型的异常。如果 WebException.Status 是 WebExceptionStatus.ProtocolError 那么您需要检查状态代码并从异常中获取响应句柄,如下所示,您想要返回给调用者的代码。下面的示例显示了 304 的情况,但同样适用于 302。
希望这可以帮助!
bool protocolError = false;
try
{
webResponse = (HttpWebResponse)hwr.EndGetResponse(arGetResponse);
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
webResponse = (HttpWebResponse)e.Response;
// 304s throw an exception... ridiculous!
if (webResponse.StatusCode != HttpStatusCode.NotModified)
{
// This indicates that the response is valid but has a protocol-level error like 404
protocolError = true;
}
}
else
{
throw;
}
}