如何在Java中防止403HTTP错误代码?
我使用简单的代码获取的html,但它显示错误http代码403。 我在其他网站如google.com的程序中尝试过,它可以工作。我也可以在browse中打开www.ip-address.com,为什么我不能在java程序中使用它如何在Java中防止403HTTP错误代码?,java,http,http-headers,Java,Http,Http Headers,我使用简单的代码获取的html,但它显示错误http代码403。 我在其他网站如google.com的程序中尝试过,它可以工作。我也可以在browse中打开www.ip-address.com,为什么我不能在java程序中使用它 public class urlconnection { public static void main(String[] args) { StringBuffer document = new StringBuffer(); try
public class urlconnection
{
public static void main(String[] args)
{
StringBuffer document = new StringBuffer();
try
{
URL url = new URL("http://www.ip-adress.com");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
document.append(line + " ");
reader.close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println(document.toString());
}
}
java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.ip-adress.com/
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at urlconnection.main(urlconnection.java:14)
web服务器可以检测到您实际上没有试图通过HTTP访问它,因此它会拒绝您的请求。有很多方法可以假装你是一个浏览器,让服务器误以为你是一个浏览器。我想该网站会检查用户代理标题,并阻止看起来像是“机器人”的内容。你需要模仿普通的浏览器。检查此解决方案或尝试使用commons http client并设置用户代理。尝试将连接
用户代理
更改为类似浏览器的东西,大多数时候我使用的是Mozilla/6.0(Windows NT 6.2;WOW64;rv:16.0.1)Gecko/20121011 Firefox/16.0.1
我认为这根本不是Java问题。您进行HTTP连接是正确的,服务器通过403响应响应您的请求,从其角度来看是“正确的”
让我们弄清楚这一点——您得到的响应是由目标Web服务器使用的任何逻辑造成的
因此,如果您问“我如何修改我的请求以返回200个响应”,那么人们可能会想出让服务器满意的解决方法。但这是一个特定于主机的过程;您的Java代码可以说是正确的,但它应该具有更好的错误处理能力,因为您总是可以得到非2xx响应。这是您需要的行
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
请参阅是否检查了代理配置?是否搜索了403的含义?