使用StatusCode 401获取响应内容

时间:2010-01-10 16:49:56

标签: c# httpwebrequest httpwebresponse http-status-code-401

我正在尝试与服务器建立连接,该服务器为所有请求发送401身份验证错误以及正常的html响应。例如 但是,我还想阅读随之发送的HTML响应,以便我可以解析它。使用LiveHTTPHeaders捕获的示例标头交换: 显然,内容长度不为零。 Firefox将其显示为javascript。

https://172.31.1.251:1003/fgtauth?73e285357b2dc5cc
Request:
GET /fgtauth?73e285357b2dc5cc HTTP/1.1
Host: 172.31.1.251:1003
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Response:
HTTP/1.x 401 Unauthorized
WWW-Authenticate: Fortigate
Content-Length: 1091
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type: text/html

此时,在Firefox中打开一个表单,要求我输入我的用户名和密码。

https://172.31.1.251:1003/

Request:
POST / HTTP/1.1
Host: 172.31.1.251:1003
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://172.31.1.251:1003/
Content-Type: application/x-www-form-urlencoded
Content-Length: 93
magic=73e285357b2dc5cc&username=uuxx&password=xxuu&4Tredir=http%3A%2F%2Fwww.google.com%2F


Response:
HTTP/1.x 401 Unauthorized
WWW-Authenticate: Fortigate
Content-Length: 924
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type: text/html

此时我被重定向到另一个URL。但是,我遇到的问题是如何获取与401 Unauthorized一起发送的长度924的内容,因为该内容将帮助我做我想做的事情。但是这一行:

WebResponse loginResponse = loginRequest.GetResponse();

抛出异常。

如果有任何建议可以帮助我了解实际内容,我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:4)

您需要阅读WebException的{​​{1}}属性,如下所示:

Response
相关问题