首页 > 其他分享 >如何用get方式、post方式向http接口发送数据

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

时间:2023-06-09 10:09:01浏览次数:42  
标签:http String get commons param2 param1 发送数据 import


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 
  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+"¶m2="+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方式,截图如下:
如何用get方式、post方式向http接口发送数据_Server

设置
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.释放连接

标签:http,String,get,commons,param2,param1,发送数据,import
From: https://blog.51cto.com/u_16065168/6445434

相关文章

  • jmeter-http信息头管理器
    将requestheads中的键值对统一放到配置元件-http信息头管理器中http信息头管理器分为两种公共的、私有的如果是统一添加的直接添加一个公共的http信息头管理器即可;如果请求的头文件中有特殊的键值对,那么单独在请求下添加一个http信息头管理器即可 ......
  • HTTP请求中GET请求为何有长度限制?
    HTTP协议并没有规定GET请求URL的长度限制,但是实际上在使用中会存在长度限制。造成GET请求URL长度限制的原因主要有以下两点:浏览器限制。不同的浏览器对URL长度的限制不同,一般来说,在地址栏中输入的URL长度范围在2,000个字符左右,超过这个长度可能会被浏览器截断。......
  • HTTP1\2\3 和 https 分别是什么?
    http1,http2http3和https有什么区别HTTP/1.0和HTTP/1.1是早期的HTTP协议版本,而HTTP/2(也称为HTTP/2.0)和HTTP/3(也称为QUIC)是后续的协议版本。以下是它们之间的主要区别:HTTP/1.x:HTTP/1.x是一种基于文本的协议,使用明文传输数据。每个请求都需要建立一个新的连接,并且请求和响应......
  • c# HttpClient超时重试
    //调用方式3秒后超时重试2次.netframework4.5HttpMessageHandlerhandler=newTimeoutHandler(2,3000);using(varclient=newHttpClient(handle......
  • 安装配置Apache支持https和fcgi
     Apache安装及配置1.1 下载软件1、Apr :(wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.1.tar.gz)2、Apr-util :(wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz)3、Pcre :(wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre......
  • 解析apache的httpd.conf配置内容
    ServerRoot“/usr/local“ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。ScoreBoardFile/var/run/......
  • Https基础以及如何配置Https
    一、什么是SSL证书,什么是HTTPSSSL证书是一种数字证书,它使用SecureSocketLayer协议在浏览器和Web服务器之间建立一条安全通道,从而实现:1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;2、用户可以通过服务器证书验证他所访问的网......
  • webservice: Could not initialize Service NoSuchMethodException getPortClassMap()
    webservicejaxws webservice中碰到的问题:CouldnotinitializeServiceNoSuchMethodExceptiongetPortClassMap()情况如下:A应用是用jaxws编写的webservice客户端,单独运行该客户端成功。B应用是基于xfire的webservice服务,在B中调用A,结果在构造一个Service类的似乎出了上......
  • 一文读懂大厂面试的计算机网络面试题目(超详细整理)(TCP/IP,OSI,HTTP协议)
    对于大厂的面试来说,掌握基本的计算机网络知识十分必要,但是说实话就单单是博主觉得,看书去复习,是最好的“安眠药”,哈哈哈,所以具有针对性的去学习更加的有效果,所以直接看大厂的高频面试题,快速建立知识结构体系。以下的一些是博主通过博览众多平台的博客推文进行的汇总:1.计算机网络OS......
  • java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal al
    一、报错及部署环境Java程序访问测试域名https方法正常,访问生产域名https域名报错,报错如下javax.net.ssl.SSLHandshakeException:Receivedfatalalert:protocol_version测试环境使用KubeSphereingress生产环境使用阿里云ACK服务的ingress配置二、问题原因客户端......