HttpClient Get/Post方式调用Http接口
本节摘要:本节主要分别介绍如何用get方式、post方式向http接口发送数据。
preparation
1. 项目环境如下:
myeclipse6.5 、tomcat5.0、system:xp、JDK:开发1.5,编译1.4
为了方便,在原来的web项目UpDown中新建了一个httpcall包,用来保存http接口和调用的客户端。

2.准备需要的jar包
* commons-httpclient-3.0.jar
* commons-logging.jar
* commons-codec-1.3.jar
3.class&method
HttpClient:
GetMethod:
PostMethod:
start
接口写了一个servlet来接收客户端get/post的请求
web.xml需要加入以下配置:
<!-- 模拟HTTP的调用,写的一个http接口 -->
<servlet>
<servlet-name>TestHTTPServer</servlet-name>
<servlet-class>httpcall.TestHTTPServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestHTTPServer</servlet-name>
<url-pattern>/httpServer</url-pattern>
</servlet-mapping>
TestHTTPServer.java的代码如下:
TestHTTPServer
package httpcall;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*Module: TestHTTPServer.java
*Description: 为了验证http接口的调用,编写了一个模拟的http接口
*Company:
*Author: ptp
*Date: Feb 22, 2012
*/
public class TestHTTPServer extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("gbk");
PrintWriter out = response.getWriter();
String param1 = request.getParameter("param1");
out.println("param1=" + param1);
String param2 = request.getParameter("param2");
out.println("param2=" + param2);
if (param1 == null || "".equals("param1") || param1.length() <= 0) {
out.println("http call failed,参数param1不能为空,程序退出");
} else if (param2 == null || "".equals("param2")
|| param2.length() <= 0) {
out.println("http call failed,参数param2不能为空,程序退出");
} else {
out.println("---http call success---");
}
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
HttpClientUtil.java的代码如下:
HttpClientUtil
package httpcall;
import java.io.IOException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
//import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
//import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
//import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
*Module: HttpClientUtil.java
*Description: 以get/post的方式发送数据到指定的http接口---利用httpclient.jar包---HTTP接口的调用
*Company:
*Author: ptp
*Date: Feb 22, 2012
*/
public class HttpClientUtil {
private static final Log log = LogFactory
.getLog(HttpClientUtil.class);
/**
* get方式
* @param param1
* @param param2
* @return
*/
public static String getHttp(String param1,String param2){
String responseMsg = "";
// 1.构造HttpClient的实例
HttpClient httpClient = new HttpClient();
// 用于测试的http接口的url
String url="http://localhost:8080/UpDown/httpServer?param1="+param1+"¶m2="+param2;
// 2.创建GetMethod的实例
GetMethod getMethod = new GetMethod(url);
// 使用系统系统的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
try {
//3.执行getMethod,调用http接口
httpClient.executeMethod(getMethod);
//4.读取内容
byte[] responseBody = getMethod.getResponseBody();
//5.处理返回的内容
responseMsg = new String(responseBody);
log.info(responseMsg);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//6.释放连接
getMethod.releaseConnection();
}
return responseMsg;
}
/**
* post方式
* @param param1
* @param param2
* @return
*/
public static String postHttp(String param1,String param2) {
String responseMsg = "";
//1.构造HttpClient的实例
HttpClient httpClient=new HttpClient();
httpClient.getParams().setContentCharset("GBK");
String url="http://localhost:8080/UpDown/httpServer";
//2.构造PostMethod的实例
PostMethod postMethod=new PostMethod(url);
//3.把参数值放入到PostMethod对象中
//方式1:
/* NameValuePair[] data = { new NameValuePair("param1", param1),
new NameValuePair("param2", param2) };
postMethod.setRequestBody(data);*/
//方式2:
postMethod.addParameter("param1", param1);
postMethod.addParameter("param2", param2);
try {
// 4.执行postMethod,调用http接口
httpClient.executeMethod(postMethod);//200
//5.读取内容
responseMsg = postMethod.getResponseBodyAsString().trim();
log.info(responseMsg);
//6.处理返回的内容
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//7.释放连接
postMethod.releaseConnection();
}
return responseMsg;
}
/**
* 测试的main方法
* @param args
*/
public static void main(String[] args) {
String param1="111";
String param2="222";
//get
// System.out.println("get方式调用http接口\n"+getHttp(param1, param2));
//post
System.out.println("post方式调用http接口\n"+postHttp(param1,param2));
}
}
result
在HttpClientUtil运行main方法,分别运行以下几种情况:
1.get方式
设置
String param1="111";
String param2="222";
运行get方式,截图如下:

设置
String param1="111";
String param2="";
运行get方式,截图如下:

2.post方式
设置
String param1="111";
String param2="222";
运行post方式,截图如下:

设置
String param1="111";
String param2="";
运行post方式,截图如下:

通过get和post方式调用http接口,总结如下:
* get方式调用http接口的步骤:
* 1.构造HttpClient实例
* 2.构造GetMethod实例
* 3.执行getMethod,调用http接口
* 4.读取内容
* 5.处理返回的内容
* 6.释放连接
*
* post方式调用http接口的步骤:
* 1.构造HttpClient实例
* 2.构造PostMethod实例
* 3.把参数值放入到PostMethod对象中
* 方式1:利用NameValuePair类
* 方式2:直接用PostMethod实例对象的addParameter方法
* 4.执行postMethod,调用http接口
* 5.读取内容
* 6.处理返回的内容
* 7.释放连接
HttpClient Get/Post方式调用Http接口的更多相关文章
- java通过HttpClient方式和HttpURLConnection方式调用WebService接口
1.引入maven依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifac ...
- httpclient案例一(调用识别接口)
public Map<String, Object> pictureRecognition(String recotype, MultipartFile imageFile) { Stri ...
- get/post方式调用http接口
http://www.cnblogs.com/java-pan/tag/HTTP/ http://www.cnblogs.com/snoopylovefiona/p/4730242.html(可做参考 ...
- .net后台以post方式调用http接口[转]
string strResult = ""; try { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create( ...
- Java之HttpClient调用WebService接口发送短信源码实战
摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...
- 三种方法实现调用Restful接口
1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- 三种方法实现java调用Restful接口
1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- 使用JS调用WebService接口
<script> $(document).ready(function () { var username = "admin"; var password = &quo ...
- HttpClient方式调用接口的实例
使用HttpClient的方式调用接口的实例. public class TestHttpClient { public static void main(String[] args) { // 请求 ...
随机推荐
- 移动支持 – ASP.NET MVC 4 系列
目前,有各种各样的方法可以提高网站应用程序的移动体验.在某些情况下,我们只想在小规格上做一些微小的风格变化:另一些情况下,我们可能完全改变外观显示或者一些视图的内容:最极端的情况下,我们 ...
- How to Remove Table Partitioning in SQL Server
In this article we will see how we can remove partitions from a table in a database in SQL server. I ...
- zabbix3.0安装之图形界面显示异常【server】
前面记录过Zabbix3.0的安装过程,遇到一些坑,当时就在博文最后提到过,显示界面只有文字没有样式的问题.今天就解决这个小问题. 首先, 我们的安装是基于nginx作为web服务器的,不是传统的用A ...
- 定制个性化码表技术 ibus
在不同用户的工作环境中,都会根据各自使用的字符集的不同,而需要定制优化各自的输入法码表,例如,在GB18030中的大量汉字,或许因为输入法码表的老旧,而难于利用自己熟悉的“五笔”方法快速录入,同样,需 ...
- Nginx限速遇到的问题
公司使用的是Nginx做文件服务器,最近服务器流量增大,老板提出要给每个客户端进行限速. 在Nginx中进行限速配置: http { limit_zone one $binary_remote_add ...
- LVM在线扩容
我虚拟机根分区已经使用了35%,现在需要对他进行在线扩容,扩容之后使用率降到30% [root@localhost ~]# dfFilesystem 1K-blocks Used Available ...
- input输入框文字提示IE兼容
<script src="assets/js/jquery-1.9.1.min.js"></script> <script> /* * jQue ...
- 实践总结 - 不可错过的Angular应用技巧
angular的核心思想是通过数据驱动一切,其他东西都是数据的延伸. 套用Javascript一切皆对象的思想,在angular中可以说一切皆数据. 关于项目构建 (1) requirejs以及Yeo ...
- Visual Studio 14 初试,vNext
下了几天的VS 2014 .终于安装上了,花了好几天时间, VS 2014 下载地址, http://www.visualstudio.com/en-us/downloads/visual-stud ...
- dubbo-admin和dubbo-monitor-simple的布署
dubbo-admin 把dubbo-admin的war包解压到tomcat或者jetty的ROOT目录下,启动就可以访问了(自己配置tomcat的端口) wget http://code.aliba ...