gpt4 book ai didi

java - 下载网页。 wget 正常,java 失败

转载 作者:行者123 更新时间:2023-12-01 03:42:18 25 4
gpt4 key购买 nike

我正在尝试下载以下页面:http://structureddata.wikispaces.com/Test

wget 没有任何选项失败:

wget "http://structureddata.wikispaces.com/Test"
(...) connect to session.wikispaces.com insecurely, use `--no-check-certificate'

使用 --no-check-certificate,它可以工作

wget --no-check-certificate "http://structureddata.wikispaces.com/Test"
grep Hello Test
Hello World

现在,我想用 java 下载相同的 URL,但下面是简单的程序:

import java.net.*;
import java.io.*;
public class Test
{
public static void main(String args[])
{
int c;
try
{
InputStream in=new URL("http://structureddata.wikispaces.com/Test").openStream();
while((c=in.read())!=-1) System.out.print((char)c);
in.close();
}
catch(Throwable err)
{
err.printStackTrace();
}
}
}

什么都不返回

用java下载页面应该怎么做?

非常感谢,

皮埃尔

最佳答案

Java URL 接口(interface)相当底层;它不会自动执行诸如跟随重定向之类的事情。您上面的代码没有内容可打印,因为没有内容。

通过执行类似下面的操作,您会看到您得到的是 HTTP 302 响应——重定向。

  URL url = new URL("http://structureddata.wikispaces.com/Test");

URLConnection urlConnection = url.openConnection();
Map<String, List<String>> headers = urlConnection.getHeaderFields();
Set<Map.Entry<String, List<String>>> entrySet = headers.entrySet();
for (Map.Entry<String, List<String>> entry : entrySet) {
String headerName = entry.getKey();
System.out.println("Header Name:" + headerName);
List<String> headerValues = entry.getValue();
for (String value : headerValues) {
System.out.print("Header value:" + value);
}
System.out.println();
System.out.println();
}

我建议使用像 HTTPClient 这样的库它将为您处理更多协议(protocol)。

(应归功于:从 here 复制上述代码。)

关于java - 下载网页。 wget 正常,java 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com