我在公司防火墙后面,但我可以在浏览器中启用和不启用代理设置的情况下将URL粘贴到我的浏览器中,并且可以正确检索数据。我不能在java中。
有什么想法吗?
代码:
function obj_to_query(obj) {
var parts = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
for (var i = 0; i < obj[key].Keys.length; i++) {
if (encodeURIComponent(obj[key].FilterType) == 1) {
parts.push(encodeURIComponent("areas=" + obj[key].Keys[i]));
}
else if (encodeURIComponent(obj[key].FilterType) == 2) {
parts.push(encodeURIComponent("categories=" + obj[key].Keys[i]));
}
}
}
}
return "?" + parts.join('&');
}
错误:
private static String getURLToString(String strUrl) throws IOException {
// LOG.debug("Calling URL: [" + strUrl + "]");
String content = "";
URLConnection connection = new URL(strUrl).openConnection();
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");
connection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));
String inputLine;
while ((inputLine = br.readLine()) != null) {
content += inputLine;
}
br.close();
return content;
}
注意:&#39;&#39;部分用于匿名化。
答案 0 :(得分:1)
当你收到一个&#34; 403:Forbidden&#34;错误,这意味着您的Java代码可以访问该URL,但它缺少访问它所需的内容。
在浏览器中,按F12(开发人员/调试模式)并再次请求URL。检查正在发送的标头和Cookie。您很可能需要为您添加其中一个,以便能够接收所需的内容。
答案 1 :(得分:0)
添加“ User-Agent”标头已为我修复:
connection.setRequestProperty("User-Agent", "Mozilla/5.0");