java get httpurlconnection http-status-code-400

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?