改变了hosts的映射,为什么HttpClient仍然返回200呢?

yhp 2007-09-18 01:58:24
hosts文件设置如下:
127.0.0.1 steve091801.qa.com
运行下面的main函数:
public static void main(String[] args) throws Exception{
String url="http://steve091801.qa.com/blank.html";
testConnect(url);
//testConnect函数在控制台输出请求的状态为200,这时候修改hosts文件
127.0.0.1 steve091802.qa.com
在控制输入任意的字符,然后回车,程序继续执行
String str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
testConnect(url);
//这是testConnect函数为什么仍然在控制台输出请求的状态为200?
}

testConnection函数如下:
public static void testConnect(String theURL){
HttpClient fcClient = new HttpClient();
HttpMethod fcMethod = new GetMethod(theURL);
fcClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
NameValuePair[] nvpa = new NameValuePair[1];
nvpa[0] = new NameValuePair("siteid", "400009708");
try{
int statusCode = fcClient.executeMethod(fcMethod);
System.out.println("statsCode:"+statusCode);
System.out.println(fcMethod.getResponseBodyAsString());
}catch(Exception e){
System.out.println(e.getMessage());
}
fcMethod.releaseConnection();
}
...全文
329 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhp 2007-09-18
  • 打赏
  • 举报
回复
注意:两次的请求必须在同一个JVM中运行。
yhp 2007-09-18
  • 打赏
  • 举报
回复
to d8111
不是的。
我第一次请求那个URL,返回200是正确的,但是然后我改变了hosts文件,再请求那个URL,由于URL的映射已经改变了,现在不可以访问了,HttpClient返回的应该不是200。但实际的结果却仍然是200.
amazeur 2007-09-18
  • 打赏
  • 举报
回复
up
宋玮-深圳 2007-09-18
  • 打赏
  • 举报
回复
是这个么?

调用实例httpClient的executeMethod方法来执行getMethod。由于是执行在网络上的程序,在运行executeMethod方法的时候,需要处理两个异常,分别是HttpException和IOException。引起第一种异常的原因主要可能是在构造getMethod的时候传入的协议不对,比如不小心将"http"写成"htp",或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;第二种异常一般是由于网络原因引起的异常,对于这种异常 (IOException),HttpClient会根据你指定的恢复策略自动试着重新执行executeMethod方法。HttpClient的恢复策略可以自定义(通过实现接口HttpMethodRetryHandler来实现)。通过httpClient的方法setParameter设置你实现的恢复策略,本文中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试3次。executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码,该状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转(默认状态下GetMethod的实例是自动处理跳转的)等。
yhp 2007-09-18
  • 打赏
  • 举报
回复
为什么在同一个JVM中,当URL失效后,HttpClient请求返回的状态是一样的呢?

62,610

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧