Pregunta

Estoy tratando de hacer una solicitud GET con algunos parámetros en Java usando httpurlconnection. Sin embargo, cada vez que hago esto, obtengo una solicitud 400: mala 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:

  • Usar URLEncoder en toda la consulta (después del?) Y solo en los valores.
  • Configuración del encabezado de longitud de contenido.
  • Configuración de la conexión para usar la salida y poner la consulta como la salida.
¿Fue útil?

Solución 2

Parece que en este caso el HTTP 400 se está utilizando para no significar un error en la sintaxis de solicitud, sino un error lógico como se describe aquí: HTTP 400 (solicitud incorrecta) de error lógico, no sintaxis de solicitud malformada.

Otros consejos

El código intenta abrir una conexión a www.awebsite.com, pero también envía valores ilegales/inválidos para el campo host: www.google.com. Definitivamente, esto no está permitido por la especificación HTTP.

Tendría que corregir esto, para asegurarse del servidor en www.awebsite.com Recibe el conjunto correcto de encabezados, para que pueda procesar su solicitud.

Enlace obligatorio: ¿Cómo usar java.net.urlconnection para disparar y manejar solicitudes HTTP?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top