import com.dadi.saas.util.HTTPUtils;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod; import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; /**
* @author wdsy
* @date 2017-06-21
*/ public class HttpClientTest { public String getPostResponse(String url, Map<String, String> parmMap ) throws IOException {
{
String result = "";
PostMethod post = new PostMethod(url);
HttpClient client = new HttpClient();
Iterator it = parmMap.entrySet().iterator();
NameValuePair[] param = new NameValuePair[parmMap.size()];
int i = 0;
while (it.hasNext()) {
Map.Entry parmEntry = (Map.Entry) it.next();
param[i++] = new NameValuePair((String) parmEntry.getKey(), (String) parmEntry.getValue());
} post.setRequestBody(param);
try {
int statusCode = client.executeMethod(post); if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = post.getResponseHeader("location");
String location = "";
if (locationHeader != null) {
location = locationHeader.getValue();
result = this.getPostResponse(location, parmMap);//用跳转后的页面重新请求�??
}
} else if (statusCode == HttpStatus.SC_OK) {
result = post.getResponseBodyAsString();
}
} catch (IOException ex) {
} finally {
post.releaseConnection();
}
return result;
}
} public static void main(String[] args) throws IOException {
Map<String, String> map = new HashMap<String, String>();
map.put("param1", "xxxx");
map.put("param2", "xxxxx");
map.put("param3", "xxxxx");
Iterator it = map.entrySet().iterator();
NameValuePair[] param = new NameValuePair[map.size()];
int i = 0;
String z =new HttpClientTest().getPostResponse("http://xxxx.xx.xx.xx:xxxx/xx/xx/xx.do?", map);
System.out.println(z);
}
}

pom:

 <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8-beta5</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>

httpClient解决post请求重定向的问题的更多相关文章

  1. httpclient 中post请求重定向

    背景:使用httpclient 的post请求进行登录,需要重定向登录,请求重定向后的地址 在httpclient中post请求不像get请求自己可以重定向,实现方式是 判断post请求返回码是否是3 ...

  2. 使用PoolingHttpClientConnectionManager解决httpclient的多线程请求问题

    直接上代码 1.主程序 public class TestMain { public static void main(String[] args) throws NSQException, Time ...

  3. 【JAVA】通过HttpClient发送HTTP请求的方法

    HttpClient介绍 HttpClient 不是一个浏览器.它是一个客户端的 HTTP 通信实现库.HttpClient的目标是发 送和接收HTTP 报文.HttpClient不会去缓存内容,执行 ...

  4. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    (一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...

  6. Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑

    本文为原创文章,转载请标明出处 目录 猫眼API HttpClient 实现 HTTP 请求 安装 HttpClientModule 模块 创建 provider 创建 page 一些坑 坑1: 未在 ...

  7. JDK HttpClient 单次请求的生命周期

    HttpClient 单次请求的生命周期 目录 HttpClient 单次请求的生命周期 1. 简述 2. uml图 3. Http连接的建立.复用和降级 3.1 调用流程及连接的建立和复用 3.2 ...

  8. HttpClientUtil [使用apache httpclient模拟http请求]

    基于httpclient-4.5.2 模拟http请求 以get/post方式发送json请求,并获取服务器返回的json -------------------------------------- ...

  9. SpringMVC学习系列-后记 解决GET请求时中文乱码的问题

    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...

随机推荐

  1. mysql在win10下的卸载

    转自http://blog.csdn.net/sxingming/article/details/52601250   本文介绍,在Windows10系统下,如何彻底删除卸载MySQL... 1> ...

  2. Qt 创建一个QtDesinger第三方控件

    1.需要创建一个合适的.pro文件 2.创建一个继承QDesignerCustomWidgetInterface的类,描述控件的一些属性. 函数 描述和返回值 name() 指定控件的名称 group ...

  3. Windows cmd命令反斜杠问题

    在Windows的终端输入命令的时候,如果在命令中存在斜杠就无法执行,因为它只支持反斜杠,而在Unix系统中是支持斜杠的,这是两者的区别.所以在Windows终端下执行命令需要注意斜杠问题

  4. 怎样使用yum安装OpenStack

      怎样使用yum安装OpenStack         headsen chen        2017-10-09  19:17:15 个人原创博客,转载请注明作者,出处,否则追究法律责任 [sh ...

  5. delphi GDI 图片压缩代码 据说是位图缩放保持原图视觉效果最好的算法

    delphi 图片压缩代码 据说是位图缩放保持原图视觉效果最好的算法 若有更好的,请大神留言我也学习下,感谢! uses WinAPI.GDIPAPI, WinAPI.GDIPOBJ; var  Bi ...

  6. 安装Accumulo——突破自己,就是成长

    前言 在我刚开始接触分布式集群的时候,是自己在几台虚拟机中手动安装的 Hadoop 和 Spark ,所以当时对 Hadoop 的配置有个简单的印象 ,但是后面发现了 Cloudera 和 Ambar ...

  7. 在线资源--图片/json等

    1. 在线图片: http://image.zhangxinxu.com/image/study/s/s256/mm3.jpg  // mmX.jpg: X可为任意的数字 2. 在线json: 雅虎天 ...

  8. Python 中 mySQL 中的语句

    class DeleteInventorybusiness(BaseBusiness): def DeleteInventory(self,Delete_goodsID): DeleteInvento ...

  9. java swing 下拉框与文本框

    import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; publi ...

  10. 用js写的时钟Demo

    css代码: <style type="text/css"> .a { width: 200px; height: 100px; position: absolute; ...