我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302

我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302,如果正常执行,应该返回200。

代码如下:

HttpClient client = new HttpClient();

PostMethod post = new PostMethod(“http://127.0.0.1:8080/testProject/finish?bizId=XXX”);

try {
int executeMethod = client.executeMethod(post);
post.releaseConnection();
} catch (Exception e) {
logger.error(e.toString());
post.releaseConnection();
} finally {
post.releaseConnection();
}


302是表示http url被重定向了,说明应该是被工程某个拦截器被拦截了,一定位,发现的确是被自定义的intercept拦截了,被拦截到login去登录了。

自定义的intercept代码如下:

我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302_第1张图片

为什么会被拦截到login去呢,因为发现该http url请求的session中token为空,为什么为空呢?

说明httpclient发起http url请求,是不会自动带着浏览器的jsessionid的,这样的话,图中getSessionAttr("token");就什么也拿不到了。

token值就是空,就被拦截到login去执行了。

---怎么解决呢?

给httpclient发起的httpurl请求的header的Cookie属性,设置上jsessionid即可。

我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302_第2张图片

这样,httpclient发起的httpurl请求就带着jsessionid了,就会拿到token了,就不会被拦截了。

我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302_第3张图片

说明,这个token是在用户登录后设置的,证明用户登录了。

我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302_第4张图片




你可能感兴趣的:(我使用httpclient发起一个post请求,http url是http://127.0.0.1:8080/testProject/finish?bizId=XXX,但是没有执行,返回码是302)