URLからInputStreamを取得しようとしています。このURLはFirefoxから開くことができます。 jsonが返され、Firefoxでjsonを表示するためのアドオンをインストールしたので、そこに表示できます。
だから私はJavaからそれを取得しようとしました:
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
しかし、urlConnection.getInputStream()でIOExceptionをスローしています。
私も試しました:
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = url.openStream();
しかし、運はありません。
すべての情報はかなりのものです。前もって感謝します。
みなさんありがとう。これは奇妙な問題ですが、ようやく解決しました。
私が要求しているURLは
http://api.themoviedb.org/2.1/Movie.search/en/json/api_key/a nightmare on Elm street
現在、ブラウザは「エルム通りの悪夢」の間のスペースを内部で「%20」に置き換えて解析します。そのため、要求されたサーバーはその要求で応答できます。しかし、From Java私はそのスペースを "%20"で置き換えなかったので、Bad Request、 source に変わります。
今では動作しています。
BufferedReader reader = new BufferedReader(new InputStreamReader(((HttpURLConnection) (new URL(urlString)).openConnection()).getInputStream(), Charset.forName("UTF-8")));
私は同様の問題があり、私のURLは次のとおりでした:
http://www.itmat.upenn.edu/assets/user-content/documents/ITMAT17. October 10 2017_.pdf
明らかにスペースが含まれていました。
これらにより、次のコードでJava.io.IOExceptionサーバーがHTTP応答コード:4を返しました。
Java.net.URL url = new URL(urlString);
Java.io.InputStream in = url.openStream();
上記のURLをコピーしてブラウザーに貼り付けると、ブラウザーがスペースに「%20」を追加することがわかります。だから私は次のコードで手動でそれをし、問題は解決しました。
if(urlString.contains(" "))
urlString = urlString.replace(" ", "%20");
接続を正しく設定していますか?これを行う方法を示すコードを次に示します。ここで例外処理については怠けていることに注意してください。これは製品品質のコードではありません。
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());
}
}
uRLのパラメーターを次のようにエンコードします。
String messageText = URLEncoder.encode(messageText, "UTF-8");