Frage

Ich versuche eine Get -Anfrage mit einigen Parametern in Java mithilfe von httpurlConnection zu stellen. Jedes Mal, wenn ich dies tue, bekomme ich jedes Mal eine 400: schlechte Anfrage. Was muss ich ändern, damit es funktioniert?

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();

Ich habe versucht:

  • Verwenden von Urlencoder bei der gesamten Abfrage (nach dem?) Und nur auf den Werten.
  • Einstellen des Headers der Inhaltslänge.
  • Stellen Sie die Verbindung ein, um die Ausgabe zu verwenden und die Abfrage als Ausgabe zu setzen.
War es hilfreich?

Lösung 2

In diesem Fall wird der HTTP 400 verwendet, um keinen Fehler in der Anforderungssyntax zu bezeichnen, sondern einen logischen Fehler, wie hier beschrieben: HTTP 400 (schlechte Anforderung) für logische Fehler, nicht missgebildete Anforderungssyntax.

Andere Tipps

Der Code versucht, eine Verbindung zu öffnen zu öffnen www.awebsite.com, aber es sendet auch illegale/ungültige Werte für das Feld des Hosts: www.google.com. Dies ist durch die HTTP -Spezifikation definitiv nicht zulässig.

Sie müssten dies korrigieren, um sicherzustellen, dass der Server bei www.awebsite.com Erhält die richtige Anzahl von Headers, damit sie Ihre Anfrage bearbeiten kann.

Obligatorische Verbindung: Wie benutze ich Java.net.urlConnection, um HTTP -Anfragen zu entlassen und zu behandeln?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top