当前位置:文档之家› 如何用get方post方式向http接口发送数据

如何用get方post方式向http接口发送数据

本节摘要:本节主要分别介绍如何用get方式、post方式向http接口发送数据。

preparation1. 项目环境如下: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.jar3.class&methodHttpClient: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的代码如下:TestHTTPServer1 package httpcall;23 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;910 /**11 *Module: TestHTTPServer.java12 *Description: 为了验证http接口的调用,编写了一个模拟的http接口13 *Company:14 *Author: ptp15 *Date: Feb 22, 201216 */1718 public class TestHTTPServer extends HttpServlet{1920 private static final long serialVersionUID = 1L;22 public void doGet(HttpServletRequest request, HttpServletResponse response)23 throws ServletException, IOException {24 response.setCharacterEncoding("gbk");2526 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 }4142 public void doPost(HttpServletRequest request, HttpServletResponse response)43 throws ServletException, IOException {44 this.doGet(request, response);45 }46 }HttpClientUtil.java的代码如下:HttpClientUtil1 package httpcall;3 import java.io.IOException;4 import mons.httpclient.DefaultHttpMethodRetryHandler;5 //import mons.httpclient.Header;6 import mons.httpclient.HttpClient;7 import mons.httpclient.HttpException;8 //import mons.httpclient.HttpStatus;9 import mons.httpclient.methods.GetMethod;10 import mons.httpclient.methods.PostMethod;11 import mons.httpclient.params.HttpMethodParams;12 //import ValuePair;13 import mons.logging.Log;14 import mons.logging.LogFactory;1516 /**17 *18 *Module: HttpClientUtil.java19 *Description: 以get/post的方式发送数据到指定的http接口---利用httpclient.jar包---HTTP接口的调用20 *Company:21 *Author: ptp22 *Date: Feb 22, 201223 */2425 public class HttpClientUtil {2627 private static final Log log = LogFactory28 .getLog(HttpClientUtil.class);2930 /**31 * get方式32 * @param param133 * @param param234 * @return35 */36 public static String getHttp(String param1,String param2){37 String responseMsg = "";3839 // 1.构造HttpClient的实例40 HttpClient httpClient = new HttpClient();4142 // 用于测试的http接口的url43 String url="http://localhost:8080/UpDown/httpServer?param1="+param1+"&param2="+param2;4445 // 2.创建GetMethod的实例46 GetMethod getMethod = new GetMethod(url);4748 // 使用系统系统的默认的恢复策略49 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,50 new DefaultHttpMethodRetryHandler());5152 try {53 //3.执行getMethod,调用http接口54 httpClient.executeMethod(getMethod);5556 //4.读取内容57 byte[] responseBody = getMethod.getResponseBody();5859 //5.处理返回的内容60 responseMsg = new String(responseBody);61 (responseMsg);6263 } 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 }7374 /**75 * post方式76 * @param param177 * @param param278 * @return79 */80 public static String postHttp(String param1,String param2) {81 String responseMsg = "";8283 //1.构造HttpClient的实例84 HttpClient httpClient=new HttpClient();8586 httpClient.getParams().setContentCharset("GBK");8788 String url="http://localhost:8080/UpDown/httpServer";8990 //2.构造PostMethod的实例91 PostMethod postMethod=new PostMethod(url);9293 //3.把参数值放入到PostMethod对象中94 //方式1:95 /* NameValuePair[] data = { new NameValuePair("param1", param1),96 new NameValuePair("param2", param2) };97 postMethod.setRequestBody(data);*/9899 //方式2:100 postMethod.addParameter("param1", param1);101 postMethod.addParameter("param2", param2);102103104 try {105 // 4.执行postMethod,调用http接口106 httpClient.executeMethod(postMethod);//200107108 //5.读取内容109 responseMsg = postMethod.getResponseBodyAsString().trim(); 110 (responseMsg);111112 //6.处理返回的内容113114 } 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 }124125 /**126 * 测试的main方法127 * @param args128 */129 public static void main(String[] args) {130131 String param1="111";132 String param2="222";133 //get134 // System.out.println("get方式调用http接口\n"+getHttp(param1, param2));135136 //post137 System.out.println("post方式调用http接口\n"+postHttp(param1,param2));138 }139 }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.释放连接。

相关主题