import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils; /*
第一种:httpClient 方式
所需jar包: commons-httpclient-3.0.1.jar 及其他依赖jar包
*/
public static void sendPostRequest1(Map<String,String> paramMap,String REQUEST_URL)
{
try {
HttpClient httpclient = new HttpClient();
httpclient.getParams().setHttpElementCharset("utf-8");
httpclient.getParams().setContentCharset("utf-8");
httpclient.getParams().setSoTimeout(10000); PostMethod post=new PostMethod(REQUEST_URL);
//参数数组
NameValuePair[] params=new NameValuePair[paramMap.size()]; int index=0;
for(String key : paramMap.keySet())
{
String value=paramMap.get(key);
NameValuePair n=new NameValuePair(key,value);
params[index]=n;
index++;
}
/*
另一种添加参数的方法:
post.addParameter(key, value);
*/
//设置请求参数
post.setRequestBody(params);
//开始请求
httpclient.executeMethod(post); // 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求
if(post.getStatusCode()==200)
{
//获取返回消息字符串
String str=post.getResponseBodyAsString();
System.out.println(str);
} } catch (Exception e) {
e.printStackTrace();
}
} /*
第二种:HttpPost 方式
所需jar包: httpclient-4.3.5.jar、httpcore-4.3.2.jar 及其他依赖jar包
*/
public static void sendPostRequest2(Map<String,String> paramMap,String REQUEST_URL)
{
try { CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(REQUEST_URL);
//设置请求和传输超时时间
RequestConfig config=RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();
httpPost.setConfig(config);
List<org.apache.http.NameValuePair> list=new ArrayList<org.apache.http.NameValuePair>();
for(String key : paramMap.keySet())
{
String value=paramMap.get(key);
BasicNameValuePair n=new BasicNameValuePair(key,value);
list.add(n); }
//设置参数
HttpEntity httpEntity=new UrlEncodedFormEntity(list,HTTP.UTF_8);
httpPost.setEntity(httpEntity);
//开始请求
HttpResponse response=httpclient.execute(httpPost); // 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求
if(response.getStatusLine().getStatusCode()==200)
{
//获取返回消息字符串
String result=EntityUtils.toString(response.getEntity()); System.out.println(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}

http接口 两种调用http接口的方法的更多相关文章

  1. java 调用wsdl的webservice接口 两种调用方式

    关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...

  2. java接口对接——别人调用我们接口获取数据

    java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  3. 调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)

    调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)

  4. GIT将本地项目上传到Github(两种简单、方便的方法)

    GIT将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安 ...

  5. php 两种获取分类树的方法

    php 两种获取分类树的方法 1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分 ...

  6. 两种读取.xml文件的方法

    这里介绍两种读取配置文件(.xml)的方法:XmlDocument及Linq to xml 首先简单创建一个配置文件: <?xml version="1.0" encodin ...

  7. Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口

    对象的序列化就是将对象写入输出流中. 反序列化就是从输入流中将对象读取出来. 用来实现序列化的类都在java.io包中,我们常用的类或接口有: ObjectOutputStream:提供序列化对象并把 ...

  8. asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理

    1.调用wsdl接口,首先需要将wsdl文件转换为cs文件: 进入VS 开发人员命令提示行,输入如下命令: c:/Program Files/Microsoft Visual Studio 8/VC& ...

  9. thinkphp的钩子的两种配置和两种调用方法

    thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十 ...

随机推荐

  1. oralce 创建表空间 和 查询进程

    -- Create the user create user lesdba identified by les_321 default tablespace USERS temporary table ...

  2. 图的连通性问题之连通和最小环——Floyd算法

    Floyd 判断连通性 d[i][j]仅表示i,j之间是否联通 ;k<=n;k++) ;i<=n;i++) ;j<=n;j++) dis[i][j]=dis[i][j]||(dis[ ...

  3. _initialize() 区别 __construct()

    _initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数. 也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initial ...

  4. 【codeforces 779E】Bitwise Formula

    [题目链接]:http://codeforces.com/contest/779/problem/E [题意] 给你n个长度为m的二进制数 (有一些是通过位运算操作两个数的形式给出); 然后有一个未知 ...

  5. Maven学习总结(十一)——Maven项目对象模型pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. 如何修改cnblogs的文本编辑器

    我发现从别处复制过来的文本,文字上下间隔太大,所以我点击“html”标签,然后,把html内容复杂到记事本里,用记事本替换的功能,把“<p>”替换为“<p style="p ...

  7. hdu 2527哈夫曼树(二叉树的运用)

    #include<stdio.h> #include<string.h> #define N  100 #define INF  2000000000  int b[N]; c ...

  8. vs2010+cuda5.0+qt4.8

    在进行CUDA处理的时候,总是在控制台程序下,于是就想要通过qt进行界面处理. 一开始先测试一下qt的环境,新建一个qt项目,不过在运行的时候提示平台不对,换成64位 出现 这个是qt的版本问题,在右 ...

  9. mybatis原理流程

    无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 从配置文件(通常是XML配置文件中)得到 sessionfactory. 由sessionfactory  产生 ses ...

  10. HDU 5502

    枚举所有的最大值盒子里糖果为K的情况,对于位置p,dp[p]为p以前的,第p个操作为抽到不是蓝球里的情况,盒子里最多糖果为k的情况的概率.而到p这个位置,可以有连续最多k-1(因为第k个操作必须为抽到 ...