我目前正在使用此脚本来获取 HTTP 响应标头。
public static List<string> GetHttpResponseHeaders(string url)
{
List<string> headers = new List<string>();
WebRequest webRequest = HttpWebRequest.Create(url);
using (WebResponse webResponse = webRequest.GetResponse())
{
headers.Add("Status Code: " + (int) ((HttpWebResponse) webResponse).StatusCode);
}
return headers;
}
具体来说,Status Code:
是我感兴趣的。话虽如此,看来StatusCode()
实际上并不返回“状态代码”,并且在成功请求时,它只返回OK
代替200
.
有没有办法强制它返回实际代码而不是描述?
话虽如此,StatusCode() 似乎实际上并不返回“状态代码”,并且在成功请求时,它仅返回 OK 而不是 200。
不,它返回一个HttpStatusCode http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode%28v=vs.110%29.aspx枚举值。如果你打电话ToString
对于具有名称的枚举值,它将返回名称。
避免这种情况的最简单方法是将其转换为int
:
headers.Add("Status Code: " + (int) ((HttpWebResponse) webResponse).StatusCode);
或者为了使块的其余部分更干净,将响应投射一次:
using (WebResponse webResponse = webRequest.GetResponse())
{
var httpResponse = (HttpWebResponse) webResponse;
headers.Add("URL: " + url);
headers.Add("Status Code: " + (int) httpResponse.StatusCode);
headers.Add("Status Description: " + httpResponse.StatusDescription + "\n");
}
(请注意,当您使用字符串连接时,ToString
如有必要,将被隐式调用 - 并且永远不值得调用类似的东西StatusDescription
这已经是一个字符串了。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)