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.
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")));
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());
}
}
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");
kodieren Sie die Parameter in der URL wie folgt:
String messageText = URLEncoder.encode(messageText, "UTF-8");