需要在同一会话中,处理2次请求的做法

1 先获取第一请求的cookie信息

2 把第一次获取的cookie携带给第2次请求


代码如下:


import org.apache.commons.httpclient.HttpException;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.io.IOUtils;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.client.params.CookiePolicy;

import org.apache.http.client.params.HttpClientParams;

import org.apache.http.cookie.Cookie;

import org.apache.http.impl.client.DefaultHttpClient;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import java.io.IOException;

import java.util.List;


public class SmsHttpUtil {


private static Logger logger = LoggerFactory.getLogger(HttpUtil.class);


/**

* 发送POST请求

*

* @param reqUrl URL地址

* @return 字符串

* @throws java.io.IOException

*/

public static String sendPostOfGetPwd(String reqUrl) throws IOException {


DefaultHttpClient httpClient = null;


HttpEntity entity = null;

try {

httpClient = new DefaultHttpClient();


HttpClientParams.setCookiePolicy(httpClient.getParams(), CookiePolicy.BROWSER_COMPATIBILITY);

HttpPost httpPost = new HttpPost(reqUrl);


HttpResponse response = httpClient.execute(httpPost);


List cookies = httpClient.getCookieStore().getCookies();


String rtnCookies = "";

for (Cookie cookie : cookies) {

if ("jsessionid".equalsIgnoreCase(cookie.getName()) ||

"MMwwwURLtel".equalsIgnoreCase(cookie.getName())) {

rtnCookies += ";" + cookie.getName() + "=" + cookie.getValue();

}

}


rtnCookies = rtnCookies.substring(1);

int statusCode = response.getStatusLine().getStatusCode();

logger.info("获取短信返回状态statusCode===" + statusCode);

if (statusCode != HttpStatus.SC_OK) {

//从头中取出转向的地址

logger.info("返回状态是" + statusCode);

return null;

}

entity = response.getEntity();

String strResp = IOUtils.toString(entity.getContent(), "UTF-8");


if (strResp == null || strResp.equals("")) {

return null;

}

return strResp + "|" + rtnCookies;


} catch (HttpException e) {

//发生致命的异常,可能是协议不对或者返回的内容有问题

logger.error("Please check your provided http address!");

return null;

} catch (IOException e) {

//发生网络异常

logger.info("网络异常" + reqUrl, e);

return null;

} finally {

if (httpClient != null) {

httpClient.getConnectionManager().shutdown();

}

}


}


/**

* 发送POST请求

*

* @param reqUrl URL地址

* @return 字符串

* @throws java.io.IOException

*/

public static String sendPostOfCheckPwd(String reqUrl, String cookieValue) throws IOException {


DefaultHttpClient httpClient = null;


HttpEntity entity = null;

try {

httpClient = new DefaultHttpClient();


HttpClientParams.setCookiePolicy(httpClient.getParams(), CookiePolicy.BROWSER_COMPATIBILITY);


HttpPost httpPost = new HttpPost(reqUrl);

httpPost.setHeader("Cookie", cookieValue);

HttpResponse response = httpClient.execute(httpPost);


int statusCode2 = response.getStatusLine().getStatusCode();

logger.info("短信验证返回statusCode===" + statusCode2);

if (statusCode2 != HttpStatus.SC_OK) {

//从头中取出转向的地址

logger.info("返回状态是" + statusCode2);

return null;

}

entity = response.getEntity();

String strResp = IOUtils.toString(entity.getContent(), "UTF-8");


if (strResp == null || strResp.equals("")) {

return null;

}

return strResp;


} catch (HttpException e) {

//发生致命的异常,可能是协议不对或者返回的内容有问题

logger.error("Please check your provided http address!");

return null;

} catch (IOException e) {

//发生网络异常

logger.info("网络异常" + reqUrl, e);

return null;

} finally {

if (httpClient != null) {

httpClient.getConnectionManager().shutdown();

}

}


}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值