文章目录:
- 1、在Java中怎么获得网页状态码,比如:404等
- 2、java中500是什么错误,404又是什么错误?
- 3、java获取url状态码问题
- 4、java怎样设置Ajax的状态码
- 5、java如何返回各种状态码
- 6、java可以自定义设置请求响应的状态码码?应该可以的,淘宝都这样做了
在Java中怎么获得网页状态码,比如:404等
StatusCode 似乎 Servelt API中,无论是 Filter Wrapper Reponse,都没有提供 get的方法。
以下是一个从网上找到的解决方案。
1.先实现一个对Response的包装器:
public class StatusExposingServletResponse extends HttpServletResponseWrapper {
private int httpStatus;
public StatusExposingServletResponse(HttpServletResponse response) {
super(response);
}
@Override
public void sendError(int sc) throws IOException {
httpStatus = sc;
super.sendError(sc);
}
@Override
public void sendError(int sc, String msg) throws IOException {
httpStatus = sc;
super.sendError(sc, msg);
}
@Override
public void setStatus(int sc) {
httpStatus = sc;
super.setStatus(sc);
}
public int getStatus() {
return httpStatus;
}
}
2, 然后实现一个Filter来替换原始的HttpServletResponse,这样你就可以在Filter里面取到statusCode了
public class StatusReportingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
StatusExposingServletResponse response = new StatusExposingServletResponse((HttpServletResponse)res);
chain.doFilter(req, response);
int status = response.getStatus();
// report 在这儿你就得到状态码了。
}
public void init(FilterConfig config) throws ServletException {
//empty
}
public void destroy() {
// empty
}
}
java中500是什么错误,404又是什么错误?
JAVA中500是WEB端服务器程序错误,404是找不到请求的资源错误。
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。
常见的HTTP请求状态码举例:
200 (成功)服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建)请求成功并且服务器创建了新的资源。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止)服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
500(服务器内部错误) 服务器遇到错误,无法完成请求。
java获取url状态码问题
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();
ListURI 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();
}
}
}
java怎样设置Ajax的状态码
301-对象已永久移走,即永久重定向。
302-对象已临时移动。
304-未修改。
307-临时重定向。
4xx-客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。
401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所
java如何返回各种状态码
对你所询问的Java如何返回各种状态码,其实这是一个系统调配命令设置,需要借用不同的返回命令实现代码的转换操作
java可以自定义设置请求响应的状态码码?应该可以的,淘宝都这样做了
响应码是HTML的规则。全世界通用。。。不是什么语言可以自定义的。
} finally { try { response.close(); } catch (IOE
.getRedirectLocations(); URI location = URIUtils.resolve(httpget.getURI(), target, redirectLo
上找到的解决方案。1.先实现一个对Response的包装器: public class StatusExposingServletResponse extends HttpServletResponseWrapper { pri