大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 技術知識分享,Java接口調用的處理

技術知識分享,Java接口調用的處理

更新時間:2020-05-15 15:52:46 來源:動力節點 瀏覽2169次

“你調用別人的接口”:

這里提供的方法是POST和GET的方法.

使用HttpClient發送請求、接收響應很簡單,一般需要如下幾步即可。

1. 創建HttpClient對象。

2. 創建請求方法的實例,并指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。

3. 如果需要發送請求參數,我使用的是List<NameValuePair>,采用鍵值對的形式

4. 釋放連接。無論執行方法是否成功,都必須釋放連接

來個代碼進行討論把,我會在代碼里面進行詳細的講解,這里主要是post和get的方法.

1.先來一個常量類:

/*************************************************接口部分**************************************************/???
????/**
?????*?請求正常
?????*/
????public?static?final?int?SUCCESS?=?200;
????
????/**
?????*?請求參數有誤
?????*/
????public?static?final?int?PARAMETER_EXCEPTION?=?400;
????
????/**
?????*?認證失敗
?????*/
????public?static?final?int?AUTHENTICATION_FAILED?=?401;
????
????/**
?????*?請求地址錯誤或不存在
?????*/
????public?static?final?int?ADDRESS_EXCEPTION?=?404;
????
????/**
?????*?請求地址錯誤或不存在
?????*/
????public?static?final?int?SERVER_EXCEPTION?=?500;
????
????/**
?????*?接口狀態碼判斷
?????*/
????public?static?String?putThrowException(int?statusCode)?{
????????String?e?=?"";
????????if(PARAMETER_EXCEPTION?==?statusCode)?{
????????????e?=?"請求參數有誤";
????????}else?if(AUTHENTICATION_FAILED?==?statusCode)?{
????????????e?=?"認證失敗";
????????}else?if(ADDRESS_EXCEPTION?==?statusCode)?{
????????????e?=?"請求地址錯誤或不存在";
????????}else?if(SERVER_EXCEPTION?==?statusCode)?{
????????????e?=?"服務器狀態異常";
????????}
????????return?e;
????}????/**
?????*?Token元素
?????*/
????public?static?final?String?USERNAME?=?"tianxun";
????public?static?final?String?PASSWORD?=?"123456";
????public?static?final?String?token?=?"dGlhbnh1biUzQTEyMzQ1Ng==";

2.接口類:

package?cn.tisson.bycs.utils;

import?java.io.IOException;
import?java.io.UnsupportedEncodingException;
import?java.net.URLEncoder;
import?java.net.UnknownHostException;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;

import?javax.net.ssl.SSLException;
import?org.apache.commons.httpclient.HttpException;
import?org.apache.http.Consts;
import?org.apache.http.HttpEntity;
import?org.apache.http.HttpEntityEnclosingRequest;
import?org.apache.http.HttpRequest;
import?org.apache.http.NameValuePair;
import?org.apache.http.NoHttpResponseException;
import?org.apache.http.client.HttpRequestRetryHandler;
import?org.apache.http.client.config.RequestConfig;
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.client.protocol.HttpClientContext;
import?org.apache.http.client.utils.URIUtils;
import?org.apache.http.client.utils.URLEncodedUtils;
import?org.apache.http.conn.ConnectTimeoutException;
import?org.apache.http.impl.client.CloseableHttpClient;
import?org.apache.http.impl.client.HttpClients;
import?org.apache.http.message.BasicNameValuePair;
import?org.apache.http.protocol.HttpContext;
import?org.apache.http.util.EntityUtils;
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?org.apache.commons.codec.binary.Base64;

import?cn.tisson.bycs.cst.Constants;

/**
?*?????接口常用工具類
?*?@author?zahngrh
?*
?*/
public?class?serviceUtils?{
????
????private?static?final?Logger?logger?=?LoggerFactory.getLogger(serviceUtils.class);
????
????/**
?????*?Base64加密Token
?????*?@return
?????*?@throws?UnsupportedEncodingException
?????*/
????public?static?String?getBase64()?throws?UnsupportedEncodingException?{
????????String?str?=?Constants.USERNAME+":"+Constants.PASSWORD;
????????final?byte[]?textByte?=?str.getBytes("UTF-8");
????????String?result=?Base64.encodeBase64String(textByte);
????????return?result;
????}
????public?static?void?main(String[]?args)?throws?UnsupportedEncodingException?{
????????System.out.println(getBase64());
????}
????
????/**
?????*?設置超時重試
?????*/
????public?static?HttpRequestRetryHandler?myRetryHandler?=?new?HttpRequestRetryHandler()?{
????????@Override
????????public?boolean?retryRequest(IOException?exception,int?executionCount,HttpContext?context)?{
????????????System.out.println("............................第"+executionCount+"次重試");
????????if?(executionCount?>=?3)?{
????????????return?false;
????????}else?if(exception?instanceof?UnknownHostException?||?exception?instanceof?ConnectTimeoutException
????????????????||?!(exception?instanceof?SSLException)?||?exception?instanceof?NoHttpResponseException)?{
????????????return?true;
????????}
????????????HttpClientContext?clientContext?=?HttpClientContext.adapt(context);
????????????HttpRequest?request?=?clientContext.getRequest();
????????????boolean?idempotent?=?!(request?instanceof?HttpEntityEnclosingRequest);
????????????if?(idempotent)?{
????????????//如果請求被認為是等冪,則重試
????????????????return?true;
????????????}
????????????return?false;
????????}
????};
????
????/**
?????*?接口請求工具類
?????*/
????public?static?Map<String,String>?requestResult(Map<String,String>?map,String?putType,String?url)?throws?HttpException,?IOException?{????????????
????????CloseableHttpResponse?response?=?null;????????
????????int?statusCode?=?0;?//?狀態碼??????
????????String?content?="";?//?返回結果????????
????????Map<String,String>?resultMap?=?new?HashMap();????????
????????//?創建httpclient對象
????????CloseableHttpClient?httpClient?=?HttpClients.createDefault();????????
????????//?設置參數
????????List<NameValuePair>?nameValuePairs?=?new?ArrayList<NameValuePair>();????????
????????for(String?key:map.keySet())?{
????????????nameValuePairs.add(new?BasicNameValuePair(key,map.get(key).toString()));
????????}????????
????????String?str?=?EntityUtils.toString(new?UrlEncodedFormEntity(nameValuePairs,Consts.UTF_8));????????
????????//?設置超時時間
????????RequestConfig?requestConfig?=?RequestConfig.custom()
????????????????.setSocketTimeout(5000)
????????????????.setConnectTimeout(5000)
????????????????.setConnectionRequestTimeout(5000)
????????????????.build();
????????????????
????????if(putType?!=?null?&&?"post".equals(putType)){????????????
????????????//?請求URL地址
????????????HttpPost?httpPost?=?new?HttpPost(url);????????????
????????????httpPost.setEntity(new?UrlEncodedFormEntity(nameValuePairs,Consts.UTF_8));????????????
????????????//?設置Token
????????????httpPost.setHeader("token",Constants.token);???????????
????????????httpPost.setConfig(requestConfig);???????????
????????????httpClient?=?HttpClients.custom().setRetryHandler(serviceUtils.myRetryHandler).build();????????????
????????????try?{
????????????????response?=?httpClient.execute(httpPost);????????????????
????????????????//?接收狀態碼
????????????????statusCode?=?response.getStatusLine().getStatusCode();????????????????
????????????}?catch?(Exception?e)?{
????????????????e.printStackTrace();
????????????}????????????
????????}else?if(putType?!=?null?&&?"get".equals(putType))?{????????????
????????????//?請求URL地址
????????????HttpGet?httpGet?=?new?HttpGet(url+"?"+str);
????????????//?設置Token
????????????httpGet.setHeader("token",Constants.token);
????????????httpGet.setConfig(requestConfig);
????????????httpClient?=?HttpClients.custom().setRetryHandler(serviceUtils.myRetryHandler).build();
????????????try?{
????????????????response?=?httpClient.execute(httpGet);
????????????????//?接收狀態碼
????????????????statusCode?=?response.getStatusLine().getStatusCode();
????????????}?catch?(Exception?e)?{
????????????????e.printStackTrace();
????????????}
????????}
????????
????????//?判斷狀態碼
????????if?(Constants.SUCCESS?==?statusCode)?{
????????????HttpEntity?entity?=?response.getEntity();
????????????content?=?EntityUtils.toString(entity,?"utf-8");
????????????logger.info(content);
????????}?else?{
????????????//logger.error("狀態碼:"+Constants.putThrowException(statusCode));
????????}?
????????resultMap.put("statusCode",?String.valueOf(statusCode));
????????resultMap.put("result",?content);
????????try?{
????????????//?釋放client
????????????httpClient.close();
????????}?catch?(IOException?e)?{
????????????logger.error("http接口調用異常:url?is::"?+?url,?e);
????????}???????????
????????return?resultMap;
????}??
}
對于接口類的調用:

/**
*根據業務使用接口,對返回值進行自我的調整
**/
public?static?void?main(String[]?args)?throws?HttpException,?IOException?{
????????Map<String,String>?paraMap?=?new?HashMap();
????????paraMap.put("type",?"1");
????????System.out.println(serviceUtils.requestResult(paraMap,?"post",?"https://api.apiopen.top/musicRankingsDetails"));
????}

以上就是動力節點java培訓機構的小編針對“技術知識分享,Java接口調用的處理”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 精品国产96亚洲一区二区三区 | 亚洲欧美日韩精品一区 | 在线精品国产一区二区 | 日本精品a在线 | 国产成人精品一区二区三区 | 亚洲国产日韩欧美一区二区三区 | 青草青视频在线观看 | 麻豆成人久久精品二区三 | 免费在线a| 在线观看免费精品国产 | 国产亚洲精品自在久久不卡 | 日本不卡视频在线观看 | 天天cao在线 | 一本色道久久综合亚洲精品高清 | 亚洲qingse中文字幕久久 | 国产激情久久久久影 | 奇米狠狠色 | 天天草天天 | 狠狠色成人综合首页 | 欧美精品久久久久久久影视 | 欧美精品成人一区二区视频一 | 性欧美一级毛片欧美片 | 级毛片久久久毛片精品毛片 | 日产精品一区二区 | 精品色| 性欧美xo视频在线观看 | 国产免费一级高清淫曰本片 | 亚洲最大视频网站 | 免费网站看v片在线成人国产系列 | 99re免费视频精品全部 | 欧美性天天影院 | 国产精品19p | 第一福利在线 | 狠狠综合久久久久综合小说网 | 亚洲一区二区影院 | 天天曰天天干天天操 | 久久精品国产精品亚洲婷婷 | 国产日韩欧美一区二区三区综合 | 国产香蕉在线精彩视频 | 亚洲在线网 | 一级成人a毛片免费播放 |