`
Vksnail
  • 浏览: 43479 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

http client调动接口方式

 
阅读更多

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
复制代码
 1 package httpcall;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 /**
11  *Module:       TestHTTPServer.java
12  *Description:  为了验证http接口的调用,编写了一个模拟的http接口
13  *Company:      
14  *Author:       ptp
15  *Date:         Feb 22, 2012
16  */
17 
18 public class TestHTTPServer  extends HttpServlet{
19     
20     private static final long serialVersionUID = 1L;
21 
22     public void doGet(HttpServletRequest request, HttpServletResponse response)
23             throws ServletException, IOException {
24         response.setCharacterEncoding("gbk");
25 
26         PrintWriter out = response.getWriter();
27         String param1 = request.getParameter("param1");
28         out.println("param1=" + param1);
29         String param2 = request.getParameter("param2");
30         out.println("param2=" + param2);
31         if (param1 == null || "".equals("param1") || param1.length() <= 0) {
32             out.println("http call failed,参数param1不能为空,程序退出");
33         } else if (param2 == null || "".equals("param2")
34                 || param2.length() <= 0) {
35             out.println("http call failed,参数param2不能为空,程序退出");
36         } else {
37             out.println("---http call success---");
38         }
39         out.close();
40     }
41 
42     public void doPost(HttpServletRequest request, HttpServletResponse response)
43             throws ServletException, IOException {
44         this.doGet(request, response);
45     }
46 }
复制代码

 

HttpClientUtil.java的代码如下:

HttpClientUtil
复制代码
  1 package httpcall;
  2 
  3 import java.io.IOException;
  4 import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
  5 //import org.apache.commons.httpclient.Header;
  6 import org.apache.commons.httpclient.HttpClient;
  7 import org.apache.commons.httpclient.HttpException;
  8 //import org.apache.commons.httpclient.HttpStatus;
  9 import org.apache.commons.httpclient.methods.GetMethod;
 10 import org.apache.commons.httpclient.methods.PostMethod;
 11 import org.apache.commons.httpclient.params.HttpMethodParams;
 12 //import org.apache.commons.httpclient.NameValuePair;
 13 import org.apache.commons.logging.Log;
 14 import org.apache.commons.logging.LogFactory;
 15 
 16 /**
 17  * 
 18  *Module:       HttpClientUtil.java
 19  *Description:  以get/post的方式发送数据到指定的http接口---利用httpclient.jar包---HTTP接口的调用
 20  *Company:      
 21  *Author:       ptp
 22  *Date:         Feb 22, 2012
 23  */
 24 
 25 public class HttpClientUtil {
 26     
 27     private static final Log log = LogFactory
 28     .getLog(HttpClientUtil.class);
 29 
 30     /**
 31      * get方式
 32      * @param param1
 33      * @param param2
 34      * @return
 35 */
 36     public static String getHttp(String param1,String param2){
 37         String responseMsg = "";
 38 
 39         // 1.构造HttpClient的实例
 40         HttpClient httpClient = new HttpClient();
 41 
 42         // 用于测试的http接口的url
 43         String url="http://localhost:8080/UpDown/httpServer?param1="+param1+"&param2="+param2;
 44 
 45         // 2.创建GetMethod的实例
 46         GetMethod getMethod = new GetMethod(url);
 47 
 48         // 使用系统系统的默认的恢复策略
 49         getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
 50                 new DefaultHttpMethodRetryHandler());
 51         
 52         try {
 53             //3.执行getMethod,调用http接口
 54             httpClient.executeMethod(getMethod);
 55 
 56             //4.读取内容
 57             byte[] responseBody = getMethod.getResponseBody();
 58             
 59             //5.处理返回的内容
 60             responseMsg = new String(responseBody);
 61             log.info(responseMsg);
 62             
 63         } catch (HttpException e) {
 64             e.printStackTrace();
 65         } catch (IOException e) {
 66             e.printStackTrace();
 67         }finally{
 68             //6.释放连接
 69             getMethod.releaseConnection();
 70         }
 71         return responseMsg;
 72     }
 73 
 74     /**
 75      * post方式 
 76      * @param param1 
 77      * @param param2
 78      * @return
 79 */
 80     public static String postHttp(String param1,String param2) {
 81         String responseMsg = "";
 82         
 83         //1.构造HttpClient的实例
 84         HttpClient httpClient=new HttpClient();
 85         
 86         httpClient.getParams().setContentCharset("GBK");
 87         
 88         String url="http://localhost:8080/UpDown/httpServer";
 89         
 90         //2.构造PostMethod的实例
 91         PostMethod postMethod=new PostMethod(url);
 92         
 93         //3.把参数值放入到PostMethod对象中
 94 //方式1:
 95 /*        NameValuePair[] data = { new NameValuePair("param1", param1),
 96                 new NameValuePair("param2", param2) };
 97         postMethod.setRequestBody(data);*/
 98         
 99         //方式2:    
100         postMethod.addParameter("param1", param1);
101         postMethod.addParameter("param2", param2);
102         
103         
104         try {
105             // 4.执行postMethod,调用http接口
106             httpClient.executeMethod(postMethod);//200
107             
108 //5.读取内容
109             responseMsg = postMethod.getResponseBodyAsString().trim();
110             log.info(responseMsg);
111             
112             //6.处理返回的内容
113 
114         } catch (HttpException e) {
115             e.printStackTrace();
116         } catch (IOException e) {
117             e.printStackTrace();
118         } finally {
119             //7.释放连接
120             postMethod.releaseConnection();
121         }
122         return responseMsg;
123     }
124 
125     /**
126      * 测试的main方法
127      * @param args
128 */
129     public static void main(String[] args) {
130     
131         String param1="111";
132         String param2="222";
133         //get
134 //        System.out.println("get方式调用http接口\n"+getHttp(param1, param2));
135         
136 //post
137         System.out.println("post方式调用http接口\n"+postHttp(param1,param2));
138     }
139 }
复制代码

 

result

HttpClientUtil运行main方法,分别运行以下几种情况:

1.get方式

设置

String param1="111";
String param2="222";

运行get方式,截图如下:

1

 

设置

String param1="111";
String param2="";

运行get方式,截图如下:

2

 

2.post方式

设置

String param1="111";
String param2="222";

运行post方式,截图如下:

3

 

设置

String param1="111";
String param2="";

运行post方式,截图如下:

4

 

通过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.释放连接

分享到:
评论

相关推荐

    RestletClient接口调试

    RestletClient是一款强大的接口调试工具,它为开发者提供了一个便捷的平台来测试、调试和分析RESTful Web服务。在Web应用程序开发过程中,接口调试是非常重要的一环,它可以帮助开发者验证API的功能,确保数据的正确...

    kettle生成经纬度, REST Client、Http Client组件例子

    在这个“kettle生成经纬度,REST Client、Http Client组件例子”中,我们将探讨如何利用Kettle处理地理位置数据,并通过HTTP客户端进行RESTful API调用。 首先,让我们深入了解Kettle中的经纬度生成。在数据处理中...

    21043779_Csharp_OPCClient_RCW_CODE.zip_OPC自定义接口_c# 接口开发_opc csha

    标题中的“21043779_Csharp_OPCClient_RCW_CODE.zip_OPC自定义接口_c# 接口开发_opc csha”表明这是一个关于C#编程语言的OPC(OLE for Process Control)客户端开发项目,使用了RCW(Runtime Callable Wrapper)技术...

    c语言实现的简单http client

    c语言实现的简单http clientc语言实现的简单http clientc语言实现的简单http clientc语言实现的简单http clientc语言实现的简单http clientc语言实现的简单http clientc语言实现的简单http clientc语言实现的简单...

    STM32F4+LWIP+HTTP client(TCP client) +DHCP +DNS

    1.在stm32使用lwip协议栈实现http client,完成向客户端定时发送数据 2.实现DNS域名解析操作 3.实现通过DHCP获取DNS服务器地址,可以通过此地址进行域名解析 4.使用MDK5.20编译

    mongoose, http client/server, mqtt client/server

    mongoose, C语言实现,支持HTTP client/server,restful, mqtt client/server

    前端开源库-ipfs-http-client

    在前端开发中,为了与IPFS进行交互,开发者通常会使用`ipfs-http-client`库,这是一个轻量级、易于使用的JavaScript库,它提供了与IPFS节点通信的HTTP API接口。 `ipfs-http-client`库的主要功能包括: 1. **添加...

    使用Simulink配置AUTOSAR Client-Server通信

    它定义了汽车电子软件组件(SWCs)的结构、接口和运行时环境。Simulink支持与AUTOSAR兼容的开发流程,允许设计人员在Simulink环境中配置和实现AUTOSAR软件架构。 在Simulink中配置AUTOSAR Client-Server通信,主要...

    esspdf-client-1.6.0.zip_PDF ESS_PDF签章_esspdf-client_pdf_pdf签章接口

    总的来说,PDF ESS_PDF签章接口,如esspdf-client,为开发者提供了一种方便的方式来集成电子签名功能,从而提升PDF文档的安全性和可信度。在实际应用中,确保正确理解和使用这些接口,可以有效地保护文档的完整性和...

    http-client.jar包下载

    http-client.jar包下载 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。

    org.apache.http.client

    1. **HTTP-CLIENT**: `httpclient-4.3.jar`是Apache HttpClient的主要部分,它提供了一种全面且高度可定制的方式来实现HTTP客户端的功能。HttpClient支持多种HTTP协议版本,包括HTTP/1.0和HTTP/1.1,并且具有处理...

    artemis-http-client-1.1.3.jar

    artemis-http-client-1.1.3.jar

    9-HTTP_Client.rar_9-HTTP_Client_C http_STM32 HTTPClient_client_h

    STM3210X HTTP_Client

    clientDEMO clientdemo调试软件

    2. 故障报警:一旦网络出现异常,clientDEMO会立即触发报警机制,通过邮件、短信等方式通知用户,确保问题能够得到及时处理。 3. 报表生成:clientDEMO能够自动生成各类网络性能报表,便于用户分析历史数据,了解...

    免费的接口调试工具 advanced rest client 压缩包

    **高级REST客户端(Advanced REST Client) 是一款强大的接口调试工具,尤其适合开发人员进行RESTful API的测试和验证。此压缩包包含了与该工具相关的多个文件,帮助用户更好地理解和使用这款工具。** **1. 安装...

    xfire接口项目(Server+Client)

    《Xfire接口项目:Server与Client的深度剖析》 Xfire接口项目,作为一个融合了Server端和Client端的完整工程,旨在提供一个高效、稳定的游戏通信解决方案。该项目的核心在于利用Xfire这一游戏社区软件的API,实现...

    SQL Server 2008 Native Client(32&64)

    Microsoft sql server 2008 Native Client (SQL Server Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接 Microsoft ...

    Microsoft SQL Server Native Client (SQL Native Client)

    Microsoft SQL Server Native Client (SQL Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接到 Microsoft SQL Server ...

    海康威视设备接口 OpenAPI 安全认证库 (JAVA) V1.1.4

    (1) artemis-http-client-x.x.x.jar可兼容JDK6及以上版本(JDK1.6仅支持http协议调用),开发前请先在Java项目中导入jar。 (2) doc文件夹下放置文档 《OpenAPI安全认证库 (Java)开发指南》是对如何使用...

    Advanced-REST-client_v3.1.9

    ### Advanced-REST-client_v3.1.9:高效HTTP接口测试工具 #### 一、概述 在现代软件开发过程中,RESTful API已经成为一种普遍采用的标准,用于不同系统间的交互与数据传输。对于开发者而言,拥有一个高效且易用的...

Global site tag (gtag.js) - Google Analytics