日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpClient Get/Post方式调用Http接口

發布時間:2024/7/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpClient Get/Post方式调用Http接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HttpClient Get/Post方式調用Http接口

本節摘要:本節主要分別介紹如何用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.釋放連接

posted on 2016-04-19 14:00 牧少 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lhfyy/p/5407954.html

總結

以上是生活随笔為你收集整理的HttpClient Get/Post方式调用Http接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。