2010-09-10 28 views
0

J'ai un morceau de code Java qui ouvre une connexion HTTP, écrit des données à ce sujet, puis récupère le code de réponse. Depuis, le connectin était bien il devrait obtenir HTTP_OK (c.-à-200) mais il obtient 1 en retour.Pourquoi HttpURLConnection.getResponseCode() renvoie-t-il 1?

Ceci est déconcertant car 1 n'apparaît nulle part dans la spécification de code Http Response. Quelqu'un pourrait-il jeter quelques idées sur la zone de problème potentiel?

ci-après le morceau de code:

URL tempURL = new URL("http://www.google.com"); 

obj_URLHttpConnectionServlet = (HttpURLConnection)tempURL.openConnection(); 
obj_URLHttpConnectionServlet.setDoInput(true); 
obj_URLHttpConnectionServlet.setDoOutput(true); 

OutputStream obj_OutputStream = obj_URLHttpConnectionServlet.getOutputStream(); 

obj_OutputStream.write(sConfigurationData.getBytes()); 
obj_OutputStream.flush(); 
obj_OutputStream.close(); 
obj_OutputStream = null; 

int iResponseCode = obj_URLHttpConnectionServlet.getResponseCode(); 
System.out.println("Response code received is : " + iResponseCode); 

sortie

Code de réponse reçu est le suivant: 1

Répondre

0

Étant donné que le côté serveur a mis à 1. Si cela est sous votre contrôle, vérifiez/corrigez le code responsable de cela. Si cela ne relève pas de votre contrôle, signalez/contactez l'administrateur du site.


Mise à jour: Selon les commentaires, Fiddler a confirmé que le côté serveur a mis la première ligne de l'en-tête de réponse à HTTP/200 1. C'est complètement bizarre. Cela devrait ressembler plus à HTTP/1.1 200. La partie devant l'espace doit indiquer le protocole/la version et la partie après l'espace doit indiquer le code de réponse. Cela ressemble de plus en plus à un problème côté serveur. Je contacterais l'administrateur du site.

+0

Est-ce possible pour un serveur de modifier le code de réponse http? Le même morceau de code sur un autre environnement et pour le même serveur fonctionne correctement et retourne 200 – Tushu

+0

Dans une classe de servlet, vous pouvez facilement faire cela par 'response.setStatus (1)'. Le serveur web peut aussi faire cela, les détails dépendent de la marque/version. Pour être sûr, utilisez un outil de surveillance HTTP comme Fiddler pour exclure l'un ou l'autre (s'il en affiche 1 également, alors c'est le serveur, sinon c'est le client). – BalusC

+0

Ok, mais la grande question demeure: comment le même serveur peut-il renvoyer un code de réponse différent pour deux mêmes codes (fonctionnant dans des environnements différents)? – Tushu