0

我一直在研究一些 Java 代码,其中将字符串转换为 URL,然后用于下载和输出其对应的 URL。不幸的是,当我运行该程序时,它就挂断了。有人有什么建议吗?

注意:我使用了 import java.io.* 和 import java.net.*

public static boolean htmlOutput(String testURL) throws Exception {
    URL myPage2 = new URL(testURL); //converting String to URL
    System.out.println(myPage2);
    BufferedReader webInput2 = new BufferedReader( 
    new InputStreamReader(myPage2.openStream()));
    String individualLine=null; 
    String completeInput=null; 

    while ((individualLine = webInput2.readLine()) != null) {
        //System.out.println(inputLine);
        System.out.println(individualLine);
        completeInput=completeInput+individualLine;
    }//end while
    webInput2.close();
    return true;
}//end htmlOutput()
4

1 回答 1

0

[虽然这个答案帮助了 OP,但它是错误的。HttpURLConnection 确实遵循重定向,所以这不可能是 OP 的问题。OP 删除接受的标记后,我将立即删除它。]

我的猜测是您在响应流中没有得到任何返回,因为您尝试连接的页面向您发送了重定向响应(即 302)。

尝试通过读取响应代码并遍历响应标头来验证这一点。应该有一个标Location有您需要遵循的新 url命名的标题

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
Map<String, List<String>> map = conn.getHeaderFields(); 

// iterate over the map and find new url 

如果您无法让上述代码段正常工作,请查看一个工作示例

您可以帮自己一个忙,使用第三方 http 客户端(如Apache Http 客户端)来处理重定向,否则您应该手动执行此操作。

于 2013-08-16T15:09:03.723 回答