




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第java中如何使用HttpClient調(diào)用接口目錄java使用HttpClient調(diào)用接口HttpClient提供的主要的功能直接言歸正傳了?。。?!上代碼java的HttpClient調(diào)用遠(yuǎn)程接口使用方法實(shí)例
java使用HttpClient調(diào)用接口
HttpClient提供的主要的功能
(1)實(shí)現(xiàn)了所有HTTP的方法(GET,POST,PUT,DELETE等)
(2)支持自動(dòng)轉(zhuǎn)向
(3)支持HTTPS協(xié)議
(4)支持代理服務(wù)器等
直接言歸正傳了?。。?!上代碼
publicstaticStringsendPutForm(Stringurl,MapString,Stringmap,Stringencoding)throwsParseException,IOException{
Stringbody="";
//打印了一下我推送的json數(shù)據(jù)
("我推送的json數(shù)據(jù):"+map);
("我推送的url:"+url);
CloseableHttpResponseresponse=null;
///獲得Http客戶端
CloseableHttpClientclient=HttpClients.createDefault();
ListNameValuePairparameters=newArrayListNameValuePair
for(Map.EntryString,Stringentry:map.entrySet()){
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
parameters.add(newBasicNameValuePair(entry.getKey(),entry.getValue()));
UrlEncodedFormEntityformEntity=newUrlEncodedFormEntity(parameters);
//配置信息
//設(shè)置連接超時(shí)時(shí)間(單位毫秒)
//設(shè)置請(qǐng)求超時(shí)時(shí)間(單位毫秒)
//socket讀寫超時(shí)時(shí)間(單位毫秒)
RequestConfigrequestConfig=RequestConfig.custom()
.setConnectTimeout(50000).setConnectionRequestTimeout(50000)
.setSocketTimeout(50000).build();
//向指定資源位置上傳內(nèi)容//創(chuàng)建Post請(qǐng)求
HttpPosthttpPost=newHttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(formEntity);
try{
response=client.execute(httpPost);
//通過response中的getEntity()方法獲取返回值
HttpEntityentity=response.getEntity();
if(entity!=null){
body=EntityUtils.toString(entity,encoding);
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
}finally{
httpPost.abort();
if(response!=null){
EntityUtils.consumeQuietly(response.getEntity());
("body:"+body);
returnbody;
代碼其實(shí)就是這么多,還有好多形式。大家可以參考寫一下。
java的HttpClient調(diào)用遠(yuǎn)程接口
httpClient比jdk自帶的URLConection更加易用和方便,這里介紹一下使用httpClient來調(diào)用遠(yuǎn)程接口。
首先導(dǎo)入相關(guān)的依賴包:
!--httpClient--
dependency
groupIdorg.apache.httpcomponents/groupId
artifactIdhttpclient/artifactId
version4.5.3/version
/dependency
使用方法
1,創(chuàng)建HttpClient對(duì)象;
2,指定請(qǐng)求URL,并創(chuàng)建請(qǐng)求對(duì)象,如果是get請(qǐng)求則創(chuàng)建HttpGet對(duì)象,post則創(chuàng)建HttpPost對(duì)象;
3,如果請(qǐng)求帶有參數(shù),對(duì)于get請(qǐng)求可直接在URL中加上參數(shù)請(qǐng)求,或者使用setParam(HetpParamsparams)方法設(shè)置參數(shù),對(duì)于HttpPost請(qǐng)求,可使用setParam(HetpParamsparams)方法或者調(diào)用setEntity(HttpEntityentity)方法設(shè)置參數(shù);
4,調(diào)用httpClient的execute(HttpUriRequestrequest)執(zhí)行請(qǐng)求,返回結(jié)果是一個(gè)response對(duì)象;
5,通過response的getHeaders(Stringname)或getAllHeaders()可獲得請(qǐng)求頭部信息,getEntity()方法獲取HttpEntity對(duì)象,該對(duì)象包裝了服務(wù)器的響應(yīng)內(nèi)容。
實(shí)例
我使用了property文件來保存不同API對(duì)應(yīng)的鏈接,也可以除去properties文件的讀取代碼,直接將變量API換成所需URL
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
import.URL;
importjava.util.Map;
importjava.util.Properties;
importorg.apache.http.client.methods.CloseableHttpResponse;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.CloseableHttpClient;
importorg.apache.http.impl.client.HttpClients;
importorg.apache.http.util.EntityUtils;
publicclassAPIUtil{
*返回API調(diào)用結(jié)果
*@paramAPIName接口在perties中的名稱
*@paramparams訪問api所需的參數(shù)及參數(shù)值
*@return此處返回的是JSON格式的數(shù)據(jù)
publicstaticStringAPI(StringAPIName,MapString,Objectparams){
Stringcontent="";
//請(qǐng)求結(jié)果
CloseableHttpResponseresponse=null;
//實(shí)例化httpclient
CloseableHttpClienthttpclient=HttpClients.createDefault();
try{
//讀取配置文件的URL
Propertiesproperties=newProperties();
URLfileURL=APIUtil.class.getClassLoader().getResource("perties");
properties.load(newFileInputStream(newFile(fileURL.getFile())));
StringAPI=properties.getProperty(APIName);
//構(gòu)造url請(qǐng)求
StringBuilderurl=newStringBuilder(API);
if(params!=nullparams.size()0){
url.append("");
for(Map.EntryString,Objectentry:params.entrySet()){
url.append(entry.getKey()+"="+entry.getValue()+"
url.substring(0,url.length()-1);
//實(shí)例化get方法
HttpGethttpget=newHttpGet(url.toString());
//執(zhí)行g(shù)et請(qǐng)求
response=httpclient.execute(httpget);
if(response.getStatusLine(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 溢價(jià)入股協(xié)議書
- 煙酒補(bǔ)償協(xié)議書
- 簽訂合同授權(quán)的委托書
- 基于物聯(lián)網(wǎng)技術(shù)的智能家居設(shè)備通信協(xié)議說明
- 牙科治療協(xié)議書
- 道路交通標(biāo)線合同協(xié)議
- 借款分期償還協(xié)議
- 配電工程合同還款協(xié)議
- 足協(xié)送簽名球隊(duì)合同協(xié)議
- 水電定位協(xié)議書
- 住宅修繕項(xiàng)目冬季施工專項(xiàng)方案
- 2023年上海鐵路局集團(tuán)有限公司招聘考試真題
- 中國(guó)高血壓防治指南(2024年修訂版)要點(diǎn)解讀
- 軸類零件加工工藝設(shè)計(jì)-畢業(yè)設(shè)計(jì)論文
- 2024年山東濟(jì)寧初中學(xué)業(yè)水平考試地理試卷真題(含答案詳解)
- 2024年計(jì)算機(jī)考試-ISTQB認(rèn)證考試近5年真題附答案
- 電波流速儀測(cè)流規(guī)程DB41-T 2229-2022
- 環(huán)保督察課件教學(xué)課件
- 2024年中國(guó)辦公信創(chuàng)場(chǎng)景實(shí)踐研究報(bào)告
- DB43-T 3008-2024 三維地理信息模型數(shù)據(jù)產(chǎn)品質(zhì)量檢查與驗(yàn)收技術(shù)規(guī)范
- 2023年云南省初中學(xué)業(yè)水平考試信息技術(shù)總復(fù)習(xí)資料
評(píng)論
0/150
提交評(píng)論