HttpURLConnection envoie une requête POST, même si httpCon.setRequestMethod(“GET”); est réglé
Voici mon code:
String addr = "http://172.26.41.18:8080/domain/list";
URL url = new URL(addr);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setDoInput(true);
httpCon.setUseCaches(false);
httpCon.setAllowUserInteraction(false);
httpCon.setRequestMethod("GET");
httpCon.addRequestProperty("Authorization", "Basic YWRtaW4fYFgjkl5463");
httpCon.connect();
OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
out.close();
Ce que je vois en réponse:
500 Server error
J'ouvre mon httpCon
var, et ce que je vois:
POST /repos/plate-forme/domaine/liste HTTP/1.1
Pourquoi est-il POST, même si j'ai utilisé httpCon.setRequestMethod("GET");
de la mettre à l'OBTENIR?
- L'authentification de base de voyage sur le fil par la POSTE?
- Avez-vous été testé sur un Galaxy Nexus?
httpCon.setDoOutput(true);
forcé POST sur mon Galaxy Nexus, mais pas sur le Galaxy S2 fonctionnant en pain d'épice.
Vous devez vous connecter pour publier un commentaire.
La
httpCon.setDoOutput(true);
implicitement défini la méthode de demande de POSTER parce que c'est la méthode par défaut chaque fois que vous voulez envoyer un corps de requête.Si vous souhaitez utiliser GET, supprimer cette ligne et retirez le
OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
ligne. Vous n'avez pas besoin d'envoyer un corps de requête pour les requêtes GET.Ce qui suit devrait faire pour une simple requête GET:
Voir aussi:
Sans rapport avec au problème concret, la partie mot de passe de votre
Authorization
valeur d'en-tête ne semble pas être correctement encodés en Base64. C'est peut-être brouillé car il a été exemplaire, mais même si elle n'était pas, je serais fixer votre encodage Base64 approche.httpCon.setDoOutput(true);
définit la méthode POST.setDoOutput
.