无法通过URL连接从站点加载内容

时间:2014-02-10 10:05:51

标签: java html 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();
    }

1 个答案:

答案 0 :(得分:1)

更改为:

 url = new URL("http://www.povarenok.ru");
                                       ^ - no slash here

看起来此网站已将/配置为其他目的

[编辑]

再次检查并且这个斜杠实际上并非如此,从我看到它在更改urser-agent之后开始工作(在创建BufferedReader之前将其放入):

((HttpURLConnection)conn).setRequestProperty("User-Agent", "SO");

提示如何在Windows with Fiddler上调试此类问题:

您应首先安装fiddler2 - 它会允许您查看您的请求。在您的Java应用程序中,在app start上添加以下行:

    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应用程序中加载。您必须比较请求标头并找出差异。因此,您可以在webbrowser中加载页面,稍后在应用程序中加载页面并使用fiddler比较结果。