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 Erreur du serveur
J'ouvre mon httpCon
var, et ce que je vois:
POST/reste/plateforme/domaine/liste HTTP/1.1
Pourquoi est-il défini sur POST même si j'ai utilisé httpCon.setRequestMethod("GET");
pour le définir sur GET?
La httpCon.setDoOutput(true);
définit implicitement la méthode de demande à POST car c'est la méthode par défaut chaque fois que vous souhaitez envoyer un corps de demande.
Si vous souhaitez utiliser GET, supprimez cette ligne et supprimez la ligne OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
. Vous n'avez pas besoin d'envoyer un corps de demande pour les demandes GET.
Ce qui suit devrait faire pour une simple demande GET:
String addr = "http://172.26.41.18:8080/domain/list";
URL url = new URL(addr);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setUseCaches(false);
httpCon.setAllowUserInteraction(false);
httpCon.addRequestProperty("Authorization", "Basic YWRtaW4fYFgjkl5463");
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
Sans rapport avec le problème concret, la partie mot de passe de votre valeur d'en-tête Authorization
ne semble pas être correctement encodée en Base64. Peut-être que c'est brouillé parce que c'était exemplaire, mais même si ce n'était pas le cas, je corrigerais votre approche d'encodage Base64.