español - java httpurlconnection rest example
HttpURLConnection envía una solicitud POST incluso a través de httpCon.setRequestMethod("GET"); Está establecido (1)
Aquí está mi código:
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();
Lo que veo en respuesta:
Error del servidor 500
Abro mi var httpCon
, y lo que veo:
POST / rest / platform / domain / list HTTP / 1.1
¿Por qué está configurado para POST aunque haya usado httpCon.setRequestMethod("GET");
para configurarlo en GET?
El httpCon.setDoOutput(true);
configura implícitamente el método de solicitud en POST porque ese es el método predeterminado cada vez que desea enviar un cuerpo de solicitud.
Si desea utilizar GET, elimine esa línea y elimine OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
línea. No es necesario enviar un cuerpo de solicitud para las solicitudes GET.
Lo siguiente debería hacer para una solicitud GET simple:
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());
Ver también:
Sin relación con el problema concreto, la parte de la contraseña de su valor de encabezado de Authorization
no parece estar correctamente codificada en Base64. Tal vez esté codificado porque fue un ejemplo, pero incluso si no lo fuera, arreglaría su enfoque de codificación Base64.