Java ,HttpUrlConnection.getInputStream() , 总是报403 error , 但是那个url 可以用浏览器打开

2024-12-25 11:42:48
推荐回答(2个)
回答1:

查看一下浏览器是否设置了代理,如果是的话,httpUrlConnection也需要设置代理。

403是禁止访问,一般网络安全上会这样设置,局域网内机器可能需要代理才能出站访问外网。

回答2:

URL url = new URL(网址);
URLConnection urlConnection = url.openConnection();

//最好模拟使用IE等常用浏览器
//urlConnection.setReadTimeout(1000 * 60 * 10); //设置读取超时
urlConnection.setRequestProperty("Accept", "*/*");
urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA)"); //模拟ie浏览器
urlConnection.setRequestProperty("Accept-Language", "zh-cn");
//urlConnection.setRequestProperty("Connection", "close"); //不进行持久化连接

BufferedInputStream bis = new BufferedInputStream(urlConnection.getInputStream(), 8192);

StringBuilder sb = new StringBuilder(BUFFER_SIZE);

while ((count = bis.read(data)) != -1)
{
sb.append(new String(data, 0, count)); //添加到结尾
}

还有,你也可以换个网址试试。