URL接続からサイトhttp://www.povarenok.ru/を読み込もうとしていますが、コンテンツが空です。私は他のサイトで試しました-すべての作品。助けてください、このサイトの何が問題になっていますか?
URL url;
try {
url = new URL("http://www.povarenok.ru/");
URLConnection conn = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String inputLine;
String fileName = "c:\\test.html";
File file = new File(fileName);
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
//inputLine is empty!!! All works with other sites
while ((inputLine = br.readLine()) != null) {
bw.write(inputLine);
}
bw.close();
br.close();
System.out.println("Done");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
への変更 :
url = new URL("http://www.povarenok.ru");
^ - no slash here
このサイトは/
他の目的に設定されているようです
[編集]
もう一度確認しましたが、このスラッシュは実際には当てはまりません。urser-agentを変更した後に機能し始めます(BufferedReaderの作成前にこれを入れてください)。
((HttpURLConnection)conn).setRequestProperty("User-Agent", "SO");
Fiddlerを使用してWindowsでこのような問題をデバッグする方法に関するヒント:
最初にインストールする必要がありますfiddler2
-それはあなたがあなたの要求を見ることができるようになります。Javaアプリで、アプリの起動時に次の行を追加します。
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyPort", "8888");
ここで、webbrowserに読み込まれるが、Javaアプリには読み込まれないサイトがあるとします。リクエストヘッダーを比較して、違いを見つける必要があります。そのため、ページをWebブラウザーにロードし、後でアプリにロードして、フィドラーを使用して結果を比較します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加