Rit*_*nha 5 java http http-status-codes http-status-code-403
我想从网址打开一个链接:" http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular ",有时我得到:
java.io.IOException:服务器返回HTTP响应代码:403表示URL.但是使用浏览器打开网址时没关系.以下是我的代码的一部分:
URL url = new URL("http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular");
InputStream is = url.openConnection().getInputStream();
Run Code Online (Sandbox Code Playgroud)
错误细节
线程"main"中的异常java.io.IOException:服务器返回HTTP响应代码:403为URL:http://www.kohls.com/search.jsp? N = 0&search = jacket&WS = 96 at sun.net.www. Links.main上的protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1627)(Links.java:41)
kto*_*orn 13
您尝试访问的特定Web服务器是检查User-AgentHTTP标头并拒绝访问任何看起来不像普通浏览器的内容,以防止机器人(这可能是您正在编写的内容).
您只需要在Java中将标头设置为请求的一部分,它就可以工作.
如何设置标头将取决于您如何建立连接,但如果您使用简单的URLConnection,那么这将工作:
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
Run Code Online (Sandbox Code Playgroud)
通常情况下,"真实" User-Agent包含大量额外信息,但该网络服务器似乎只查找基本浏览器类型.
您可以使用wget和不使用-UUser-Agent选项来证明这一点:
$ wget "http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular"
--2015-05-07 16:08:46-- http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular
2015-05-07 16:08:46 ERROR 403: Forbidden.
$ wget -U "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0" "http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular"
--2015-05-07 16:08:49-- http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular
awaiting response... 200 OK
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20617 次 |
| 最近记录: |