使用Apache中的HttpClient的例項CloseableHttpClient的一個例子
Apache的HttpClient可以被用於從客戶端傳送HTTP請求到伺服器端,下面給出一個用HttpClient執行GET和POST請求的操作方法
使用maven構建依賴包:
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId >httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
注意此httpClient包從4.4開始SSLContexts類就被移去了,我在使用4.3.1版本.其中的jar列表如下:
使用Apache的HttpClient傳送GET和POST請求的步驟如下:
1. 使用幫助類HttpClients建立CloseableHttpClient物件.
2. 基於要傳送的HTTP請求型別建立HttpGet或者HttpPost例項.
3. 使用addHeader方法新增請求頭部,諸如User-Agent, Accept-Encoding等引數.
4. 對於POST請求,建立NameValuePair列表,並新增所有的表單引數.然後把它填充進HttpPost實體.
5. 通過執行此HttpGet或者HttpPost請求獲取CloseableHttpResponse例項
6. 從此CloseableHttpResponse例項中獲取狀態碼,錯誤資訊,以及響應頁面等等.
7. 最後關閉HttpClient資源.
下面給出示例程式碼:
package com.journaldev.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class ApacheHttpClientExample {
private static final String USER_AGENT = "Mozilla/5.0";
private static final String GET_URL = "http://localhost:9090/SpringMVCExample";
private static final String POST_URL = "http://localhost:9090/SpringMVCExample/home";
public static void main(String[] args) throws IOException {
sendGET();
System.out.println("GET DONE");
sendPOST();
System.out.println("POST DONE");
}
private static void sendGET() throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(GET_URL);
httpGet.addHeader("User-Agent", USER_AGENT);
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
System.out.println("GET Response Status:: "
+ httpResponse.getStatusLine().getStatusCode());
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpResponse.getEntity().getContent()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
// print result
System.out.println(response.toString());
httpClient.close();
}
private static void sendPOST() throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(POST_URL);
httpPost.addHeader("User-Agent", USER_AGENT);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("userName", "Pankaj Kumar"));
HttpEntity postParams = new UrlEncodedFormEntity(urlParameters);
httpPost.setEntity(postParams);
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
System.out.println("POST Response Status:: "
+ httpResponse.getStatusLine().getStatusCode());
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpResponse.getEntity().getContent()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
// print result
System.out.println(response.toString());
httpClient.close();
}
}
輸出結果如下所示 :
GET Response Status:: 200
<html><head> <title>Home</title></head><body><h1> Hello world! </h1><P> The time on the server is March 7, 2015 1:01:22 AM IST. </p></body></html>
GET DONE
POST Response Status:: 200
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>User Home Page</title></head><body><h3>Hi Pankaj Kumar</h3></body></html>
POST DONE
參考網址:看這裡
相關推薦
使用Apache中的HttpClient的例項CloseableHttpClient的一個例子
Apache的HttpClient可以被用於從客戶端傳送HTTP請求到伺服器端,下面給出一個用HttpClient執行GET和POST請求的操作方法 使用maven構建依賴包: <!-- https://mvnreposit
使用Apache中的HttpClient的例項CloseableHttpClient進行http請求
對接咪咕音源場景重現:現在公司儲存音樂的id標識等資訊,不包含音樂url。想獲得音樂url,需要 和咪咕進行音源對接。根據咪咕提供的服務介面,實現業務對接。 首先,根據音樂id獲得url,需要拼裝url請求,再新增header頭部資訊。其中,url拼裝比較簡
java中什麽是Yield給出一個例子
process ron rac 占用 itl its 繼續 並行 code 馬克-to-win:yield英文是屈服投降的意思。 (視頻下載) (全部書籍)當前線程投降就是當前線程希望釋放CPU的自己的占用權,( 但系統可以忽略它這個請求。)參見: https://docs
java中什麽是線程安全給出一個例子
who pub begin ati () pan 大白 執行 這就是 8.線程安全 什麽是線程安全? 馬克-to-win: (視頻下載) (全部書籍)最大的大白話,你的代碼一個線程執行挺好,一上多線程測試就玩兒完(結果不是你所想要的),這就是線程不安全。反之為線程安全。首
java中什麽是線程不安全給出一個例子
class spa except one ref exceptio lan sleep print 下面我們再給出一個線程不安全的例子。 (視頻下載) (全部書籍)例:1.8.2-本章源碼class BookMark_to_win { int bookNum=10;
46.一個例子瞭解C++中異常處理
異常處理的棧展開、解構函式和建構函式的異常,異常處理的層次 catch的搜尋匹配 。。。 class wrong :public exception { public: wrong(const int& i = 0,const string& str = ""):err
mysql中case的一個例子
最近遇到一個問題: year amount num 1991 1 1.1 1991 2 1.2 1991 3 1.3 1
C語言實戰105例子——例項1 一個價值“三天”的bug
scanf家族的使用 int fscanf (FILE *stream»char const *format, …) int scanf (char const *format,…) int sscanf(char const *string,char const *form
Beego中前後端資料是如何實現互動的,Get|Struct|JSON / Request Body, 一個例子醍醐灌頂
1、get方式獲取引數 Get、POST 等方式的請求,beego 裡面會自動解析這些資料。 比如一個登陸頁面的實現 前端我們是Post,使用者名稱和密碼 <form class="login_form" name = "login"method = "post" ac
Servlet中請給出一個Cookie的增刪改查的例子。
2.Servlet與Cookie:(視訊下載) (全部書籍) 馬 克-to-win:Cookie有點像Session。Session是把鍵值對存在伺服器端,一個Servlet存值 ,另外一個Servlet可以取值。Cookie也是以鍵值對的形式用於讀取,不過是儲存在客戶端 瀏覽器的某個文本
shell中與運算 cut切分行 if while綜合在一起的一個例子
前言: 公司要統計 treasury庫hive表磁碟空間,寫了個指令碼,如下: 查詢hive倉庫表佔用hdfs檔案大小: hadoop fs -du -h /user/hive/warehouse/treasury.db > treasury
關於訊號反射的模擬(針對《訊號完整性分析》一書中的一個例子)
關於訊號反射的模擬。 使用工具為ltspice。 書中舉例為:源電壓是1V,內阻是10歐姆,進入實際時延為1ns的50歐姆傳輸線,假設傳輸線末端開路。 圖1 模擬電路圖 由於內阻為10歐姆,瞬態阻抗為50歐姆,所以在進入傳輸線時,電壓被分壓為1*50/(50+1
Shiro中最簡單的一個身份驗證例子
Shiro作為一個Java安全框架,身份驗證是它最基本的功能。 首先給出shiro的Maven配置 <dependencies> <dependency>
Redis的安裝、使用以及php中擴充套件redis並實現php操作redis的一個例子
1、下載原始碼包redis-2.8.21.tar.gz,並將其上傳到指定目錄/urs/src,然後對其進行解壓: [[email protected] src]# tar -xvf redis-2.8.21.tar.gz 進入解壓後的目錄,並執行下面命令,指定安裝
java中什麼是Yield給出一個例子
馬克-to-win:yield英文是屈服投降的意思。當前執行緒投降就是當前執行緒希望釋放CPU的自己的佔用權,( 但系統可以忽略。)參見:https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#yield%28%29其中有這麼句話: A
iOS開發-一個例子學習iOS中的常見設計模式
原文iOS Design Patterns iOS設計模式 ,你可能已經聽說過這個術語,但你知道這意味著什麼嗎?雖然大多數的開發人員認為設計模式是非常重要的,但目前關於這個問題的文章不是很多,我們的開發人員有時寫程式碼有時不注重設計模式。 設計模式是軟體設
一個例子告訴你什麼是封裝,繼承和多型(C++ 程式碼例項) (一)
add by WJB date 2018/08/30 面向物件的三大特性:封裝,繼承和多型; 封裝:將事物擁有的屬性和動作隱藏起來,只保留特定的方法與外界聯絡。 繼承:子類可以擁有父類的屬性和方法; 多型:以說是“一個介面,多種實現”或者說是父類的引用變數可以指向
jQuery中ajax應用的一個例項(前端+controller)
頁面的程式碼:if(filesArray.length>0) { $.ajax({ type: "post", url: "****/****/sendFiles", //data:JSON.stringify(f
stl 中怎樣遍歷一個map中的所有元素。請給是例項
兩 種方式iterator遍歷的次數是相同的,但在STL中效率不同,前++--返回引用,後++--返回一個臨時物件,因為iterator是類模板,使 用it++這種形式要返回一個無用的臨時物件,而it++是函式過載,所以編譯器無法對其進行優化,所以每遍歷一個元素,你就建立並銷燬了一個無用的臨
從一個例子看Python3.x中序列解包
假如一個字串'ABCDEFGH',要輸出下列格式: 即: 每次取出第一個作為首,然後的字串拆成列表,放置在後面,最後成上面的輸出: 一般的處理是: >>> s = 'ABCDEF