本节摘要:本节主要分别介绍如何用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+"&param2="+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接口的更多相关文章

  1. java通过HttpClient方式和HttpURLConnection方式调用WebService接口

    1.引入maven依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifac ...

  2. httpclient案例一(调用识别接口)

    public Map<String, Object> pictureRecognition(String recotype, MultipartFile imageFile) { Stri ...

  3. get/post方式调用http接口

    http://www.cnblogs.com/java-pan/tag/HTTP/ http://www.cnblogs.com/snoopylovefiona/p/4730242.html(可做参考 ...

  4. .net后台以post方式调用http接口[转]

    string strResult = ""; try { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create( ...

  5. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  6. 三种方法实现调用Restful接口

    1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  7. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  8. 使用JS调用WebService接口

    <script> $(document).ready(function () { var username = "admin"; var password = &quo ...

  9. HttpClient方式调用接口的实例

    使用HttpClient的方式调用接口的实例. public class TestHttpClient { public static void main(String[] args) { // 请求 ...

随机推荐

  1. 10天学会phpWeChat——第五天:实现新闻投稿功能

    在前几讲里,我们逐渐实现了自己小模块的新闻列表展示.新闻详情展示功能,现在您已经初步有能力开发一个phpWeChat小模块了,本文将在已开发的hello world模块基础上,增加一个新的功能--新闻 ...

  2. OSX unable to write 'random state'

    openssl ca -gencrl -config ./config/openssl.cnf -out ./CA/crl/cacrl.pem -passin pass:'password' unab ...

  3. [mobi文件格式详细介绍一]_[资料篇]

    Amazon 收购 Mobipocket 于 2005年3月: Kindle 第一版于2007发布,mobi成为其系统支持的电子格式之一,mobi是由kindle带动发展起来的; 有人问Amazon为 ...

  4. 使用npm安装一些包失败了的看过来(npm国内镜像介绍)

    这个也是网上搜的,亲自试过,非常好用! 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set reg ...

  5. vim没有颜色

    vim /etc/vim/vimrc   #查找到syntax on 启用,去掉前面的" (引号).

  6. 【SFTP】使用Jsch实现Sftp文件上传-支持断点续传和进程监控

    JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...

  7. EMC起步:华为交换机拆解

    [作者:byeyear    Email:east3@163.com    转载请保留此行] 1. 静电抗扰 理想情况下,我们的系统是一个中空且密闭的金属盒子,根据电磁场理论,外界的任何静电源都不可能 ...

  8. ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)

    mysql安全机制的问题 解决: mysql -P 3306 -h host -u account --secure_auth=off -pmysql -P 端口号 -h 主机地址 -u 账号 --s ...

  9. TinyHTTP代码核心流程

    TinyHTTPd是一个超轻量型Http Server,使用C语言开发,全部代码不到600行 研究HTTP服务器,为了更好的造轮子,看了TinyHTTPd代码,对逻辑处理画个简单流程图(不含底层)

  10. python---dnspython

    dnspython 是Python实现的一个DNS工具包,支持几乎所有的记录类型,可以用于查询,传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS).可以替代ns ...