HttpURLConnection读取响应内容403错误

时间:2011-01-08 08:07:55

标签: java http http-status-code-403

当我从具有403响应的URL获取数据时

is = conn.getInputStream();

它抛出IOException,我无法获取响应数据。

但是当我使用firefox并直接访问该URL时,ResponseCode仍然是403,但我可以获得html内容

4 个答案:

答案 0 :(得分:64)

根据javadoc,HttpURLConnection.getErrorStream方法将返回InputStream,可用于从错误条件(例如404)中检索数据。

答案 1 :(得分:12)

尝试这样的事情:

try {
    String text = "url";
    URL url = new URL(text);
    URLConnection conn = url.openConnection();
    // fake request coming from browser
    conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB;     rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)");
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    String f = in.readLine();
    in.close();
    System.out.println(f);
} catch (Exception e) {
    e.printStackTrace();
}

答案 2 :(得分:2)

试试这个:

BufferedReader reader = new BufferedReader(new InputStreamReader(con.getResponseCode() / 100 == 2 ? con.getInputStream() : con.getErrorStream()));

https://stackoverflow.com/a/30712213/505623

答案 3 :(得分:0)

即使添加代理字符串后我也遇到了同样的错误。经过一天的调查后,终于找到了问题。如果url方案以“HTTPS”开头,则会产生错误403.它应该是小写的(“https”)。因此,请确保在打开连接之前调用“url.toLowercase()”