聊城网站制作公司,聊城网站建设,聊城网站优化,聊城网络公司,聊城网站推广,聊城网站运营,聊城网络运营,聊城搜索引擎优化,聊城网页设计,聊城网站制作
 
 
公司拥有五年的网站建设经验,专业网站制作,推广及网站优化,有大量优秀客户案例
网站建设 | 设为首页 | 加入收藏 | 联系我们  
公告:热烈庆祝聊城精英网络2010版官方网站改版成功!
当前位置 :首页 > 网页知识  

网站建设过程中如何用get方式、post方式向http接口发送数据。

http://www.wangzhan123.net   2014-4-12 10:18:30   人气:

网站建设过程中如何用get方式、post方式向http接口发送数据。

preparation

1. 项目环境如下:

myeclipse6.5 、tomcat5.0、system:xp、JDK:开发1.5,编译1.4

为了方便,在原来的web项目UpDown中新建了一个httpcall包,用来保存http接口和调用的客户端。

5

 

 

 

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需要加入以下配置:

Java代码  
 
以下是引用片段:
<!-- 模拟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方式,截图如下:

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

专业设计团队
满足您的各种设计要求
实力程序开发团队
为您定制各种程序模块
后台管理高效安全
方便更新上传网站资料
全球高速访问
无盲区、定制异地备份
专业客服团队
解决一切使用难题
赠送大容量空间邮箱
免费优化推广
   
关于我们 | 工作机会 | 付款方式 | 网站制作 | 网页制作 | 网页设计 | 网络公司 | 联系我们 | 网站地图
版权所有:聊城精英网络科技有限公司 © 2005-2010 All Rights Reserved.
咨询专线:0635-6950368 技术专线:15192175820 在线QQ:312817927 1485871644
地址:聊城市闸口科技市场 邮编:252000 苏ICP备10112026号