webentwicklung-frage-antwort-db.com.de

Der Server hat den HTTP-Antwortcode zurückgegeben: 400

Ich versuche einen InputStream von einer URL zu bekommen. Die URL kann von Firefox aus geöffnet werden. Es gibt einen Json zurück und ich habe ein Addon zur Anzeige von Json in Firefox installiert, damit ich es dort ansehen kann.

Also habe ich versucht, es von Java zu bekommen:

URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

Es löst jedoch eine IOException in urlConnection.getInputStream () aus.

Ich habe auch versucht:

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = url.openStream();

Aber kein Glück.

Jede Information ist spürbar. Danke im Voraus. 

10
Tapas Bose

Dank euch allen. Dies ist ein seltsames Problem, aber ich habe es endlich gelöst. 

Die angeforderte URL lautet 

http://api.themoviedb.org/2.1/Movie.search/en/json/api_key/a nightmare on Elm street 

Jetzt ersetzt der Browser die Leerzeichen zwischen "einem Albtraum in der Elmstraße" durch "% 20" und Parses. Aus diesem Grund kann der angeforderte Server auf diese Anforderung antworten. Aber aus Java habe ich diese Leerzeichen nicht durch "% 20" ersetzt, also wird es zu Bad Request, source .

Jetzt funktioniert es.

BufferedReader reader = new BufferedReader(new InputStreamReader(((HttpURLConnection) (new URL(urlString)).openConnection()).getInputStream(), Charset.forName("UTF-8")));
27
Tapas Bose

richten Sie die Verbindung korrekt ein? Hier ist ein Code, der veranschaulicht, wie das geht. Beachten Sie, dass ich hier mit der Behandlung von Ausnahmen faul bin.

import Java.io.BufferedReader;
import Java.io.InputStreamReader;
import Java.net.HttpURLConnection;
import Java.net.URL;


public class URLFetcher {

    public static void main(String[] args) throws Exception {
        URL myURL = new URL("http://www.paulsanwald.com/");
        HttpURLConnection connection = (HttpURLConnection) myURL.openConnection();
        connection.setRequestMethod("GET");
        connection.setDoOutput(true);
        connection.connect();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuilder results = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            results.append(line);
        }

        connection.disconnect();
        System.out.println(results.toString());
    }
}
3
Paul Sanwald

Ich hatte ein ähnliches Problem und meine URL war:

http://www.itmat.upenn.edu/assets/user-content/documents/ITMAT17. October 10 2017_.pdf

die als offensichtlich klare Räume enthalten.

Diese verursachten Java.io.IOException Server haben HTTP-Antwortcode: 400 im folgenden Code zurückgegeben:

Java.net.URL url = new URL(urlString);  
Java.io.InputStream in = url.openStream();

Wenn Sie die obige URL kopieren und in den Browser einfügen, werden Sie feststellen, dass der Browser "% 20" für die Leerzeichen hinzufügt. Also habe ich es manuell mit dem folgenden Code gemacht und das Problem ist gelöst.

if(urlString.contains(" "))
    urlString = urlString.replace(" ", "%20");
1
harshainfo

kodieren Sie die Parameter in der URL wie folgt:

String messageText = URLEncoder.encode(messageText, "UTF-8");
0
Mahmoud Saleh