java post 403_Java HTTP GET请求给出403 Forbidden,但在浏览器中工作

我有一些代码,这意味着通过HTTP向服务器发送GET请求,并在那里获取数据。我还没有编写与响应有关的部分,因为我首先想测试GET请求是否工作。并没有:Java HTTP GET请求给出403 Forbidden,但在浏览器中工作

private static String fetch() throws UnsupportedEncodingException, MalformedURLException, IOException {

// Set the parameters

String url = "http://www.futhead.com";

String charset = "UTF-8";

//Fire the request

try {

URLConnection connection = new URL(url).openConnection();

connection.setRequestProperty("Accept-Charset", charset);

connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");

// ^^^ I tried this, and it doesn't help!

InputStream response = connection.getInputStream();

HttpURLConnection httpConnection = (HttpURLConnection) new URL(url).openConnection();

httpConnection.setRequestMethod("GET");

System.out.println("Status: " + httpConnection.getResponseCode());

} catch (UnknownHostException e) {

// stuff

}

return null;

// ^^^ I haven't coded the fetching itself yet

}

考虑到这些代码,fetch()打印Status: 403。这是为什么发生?我的猜测是,这个特定的服务器不允许非浏览器客户端访问它(因为代码与http://www.google.com一起使用),但有没有解决方法?

已经有一些答案了,但其中有些答案要么与我无关(他们谈论HTTPS的问题),要么难以理解。我试过那些我能理解的东西,但无济于事。

2014-05-03

Bluefire

+0

使用Wireshark和比较你的浏览器的请求和你的编码要求遇到的问题。服务器可能抛出403,因为特定的标题行使用丢失/不同。 –

+0

对。我查看浏览器发送的标题,并将它们全部复制到GET中? –

+2

我看了一下网站设置的cookie,看起来它使用了CloudFlare,它设置了一个'__cfduid' cookie。您可能必须[处理此Cookie](http://www.hccp.org/java-net-cookie-how-to.html)。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值