java获取url状态码问题 100
拿出一个会跳转的网页,结果还是返回200,这是代码,我在浏览器上输入这个地址,跳转了,但是java获取的状态码还是200?怎么回事,试了好多发现,除非特殊格式的url,比...
拿出一个会跳转的网页,结果还是返回200,
这是代码,我在浏览器上输入这个地址,跳转了,但是java获取的状态码还是200?怎么回事,试了好多发现,除非特殊格式的url,比如adfsdf.asdfds.com,这样的,我打个11.bravousz.com都能200,我浏览器打开这个网页根本就没有, 展开
这是代码,我在浏览器上输入这个地址,跳转了,但是java获取的状态码还是200?怎么回事,试了好多发现,除非特殊格式的url,比如adfsdf.asdfds.com,这样的,我打个11.bravousz.com都能200,我浏览器打开这个网页根本就没有, 展开
2个回答
展开全部
httpclient默认自动处理redirect,返回200是因为它已经自动跳转了,如果想抓到301状态,可以手动修改跳转规则(以下代码基于httpclient 4.5):
public static void main(String[] args) {
CloseableHttpClient
httpclient = HttpClients.custom().setRedirectStrategy(new
DefaultRedirectStrategy() {
public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) {
return false;
}}).build();
HttpClientContext context = HttpClientContext.create();
HttpGet httpget = new HttpGet("
);
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpget, context);
HttpHost target = context.getTargetHost();
List<URI> redirectLocations = context.getRedirectLocations();
URI location = URIUtils.resolve(httpget.getURI(), target, redirectLocations);
System.out.println("Final HTTP location: " + location.toASCIIString());
System.out.println(response.getStatusLine());
// Expected to be an absolute URI
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在返回前,清理下缓存,你问的问题是每次状态码都是成功的,而实际你是想测找不到的网址给出错误的状态码吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询