2009-05-07 9 views
0

J'ai un service Java que je dois utiliser (je ne peux pas le modifier) ​​et un serveur web qui utilise l'autorisation HTTP digest. J'utilise HttpWebRequest pour communiquer avec le serveur (avec la méthode GET). NetworkCredentials requis pour l'authentification sont fournis. Mais l'appel de GetResponse() génère une erreur 400 (demande incorrecte).OBTENIR une requête avec requête et digérer l'autorisation http

Adresse: http://info.server.com/someFolder/servlet.do?cmd=get_info&param=value

Demande exemple (non complet, seules choses pertinentes):

GET /someFolder/servlet.do?cmd=get_info & param = value HTTP/1.1

hôte: info.server.com

Réponse: 401 autorisation requise

Deuxième demande:

GET /someFolder/servlet.do?cmd=get_info & param = value HTTP/1.1

Hôte: info.server.com

Autorisation: Digest ... uri = "/ unDossier/servlet .Ne » ... (non-tête complet évidemment)

Deuxième réponse: 400 demande Bad

J'ai essayé cette demande avec les navigateurs Web (Internet Explorer, Firefox) et il fonctionne, mais il semble que le navigateur a mis le demande entière uri dans l'uri parth d'Autorisation h eader, alors que HttpWebRequest formate l'en-tête comme ci-dessus. Est-ce que quelqu'un sait comment forcer HttpWebRequest à placer l'uri entier dans l'en-tête Authorization? Ou peut-être y a-t-il une autre solution à ce problème?

Merci pour l'aide!

Répondre

0

Nous avons le même problème et ont dépisté jusqu'à l'URL dans l'en-tête d'autorisation. Il semble que HttpWebRequest n'envoie que le nom d'hôte et non l'URL complète. Il omet:

?cmd=get_info&param=value 

de l'URL. IE8 et Chrome utilisent tous les deux l'URL complète, y compris les paramètres.

Nous avons été en mesure de résoudre ce problème avec une implémentation personnalisée de l'autorisation Digest. Voir this answer.

Questions connexes