Question

Je suis en train d'établir une connexion à un serveur qui envoie 401 Erreur d'authentification pour toutes mes demandes ainsi que la réponse HTML normale. par exemple. Cependant, je veux aussi lire la réponse HTML qui est envoyé alongwith afin que je puisse analyser cela. Un échange d'en-tête d'exemple capturées à l'aide LiveHTTPHeaders: De toute évidence, la longueur du contenu est différent de zéro. Firefox montre qu'il est 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

À ce stade, une forme s'ouvre dans firefox qui me demande d'entrer mon nom d'utilisateur et mot de passe.

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

A ce point, je suis redirigé vers une autre URL. Cependant, le problème que j'ai est de savoir comment obtenir le contenu de longueur 924 qui est envoyé avec le 401 non autorisé, parce que le contenu me aider à faire ce que je veux faire plus. Mais la ligne même:

WebResponse loginResponse = loginRequest.GetResponse();

lève une exception.

Je serai reconnaissant pour toute suggestion me aider à obtenir le contenu.

Merci.

Était-ce utile?

La solution

Vous devez lire la propriété WebException du Response, comme ceci:

WebResponse loginResponse;
try {
    loginResponse = loginRequest.GetResponse();
} catch(WebException ex) {
    if (ex.Status == WebExceptionStatus.ProtocolError) {
        loginResponse = ex.Response;
    } else
        throw;
}

//Do something with the response, and remember to dispose it.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top