java - HttpURLConnection Solicitud GET obteniendo 400 Bad Request
http-status-code-400 (2)
Estoy tratando de hacer una solicitud GET con algunos parámetros en Java usando HttpURLConnection. Sin embargo, cada vez que hago esto, obtengo un 400: Solicitud incorrecta cada vez. ¿Qué necesito cambiar para que funcione?
String url = "http://www.awebsite.com/apath?p1=v1&p2=v2&p3=v3";
HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(false);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.setRequestProperty("Host", "www.awebsite.com");
conn.setRequestProperty("User-Agent", "Mozilla/4.0");
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
conn.setRequestProperty("Keep-Alive", "115");
conn.setRequestProperty("Connection", "keep-alive");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder data = new StringBuilder();
String s = "";
while((s = br.readLine()) != null)
data.append(s);
String pageData = data.toString();
Yo he tratado:
- Usando URLEncoder en toda la consulta (después del?) Y solo en los valores.
- Establecer el encabezado de longitud del contenido.
- Configurar la conexión para usar la salida y poner la consulta como salida.
El código intenta abrir una conexión a www.awebsite.com
, pero también envía valores ilegales / no válidos para el campo Anfitrión: www.google.com
. Esto definitivamente no está permitido por la especificación HTTP.
www.awebsite.com
corregir esto para asegurarse de que el servidor en www.awebsite.com
reciba el conjunto correcto de encabezados, para que pueda procesar su solicitud.
Enlace obligatorio : ¿Cómo usar java.net.URLConnection para iniciar y gestionar solicitudes HTTP?
Parece que en este caso el HTTP 400 se utiliza para no significar un error en la sintaxis de solicitud, sino un error lógico como se describe aquí: HTTP 400 (solicitud incorrecta) para el error lógico, sin formato de solicitud de sintaxis .