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

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

長沙一度軟件培訓      2022-04-07 15:49:01     7

技術知識分享,Java接口調用的處理,你調用別人的接口:這里提供的方法是POST和GET的方法.使用HttpClient發(fā)送請求、接收響應很簡單,一般需要如下幾步即可。1. 創(chuàng)建H

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

“你調用別人的接口”:

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

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

1. 創(chuàng)建HttpClient對象。

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

3. 如果需要發(fā)送請求參數(shù),我使用的是List<NamevaluePair>,采用鍵值對的形式

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

來個代碼進行討論把,我會在代碼里面進行詳細的講解,這里主要是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?=?"請求參數(shù)有誤";????????}else?if(AUTHENTICATION_FAILED?==?statusCode)?{????????????e?=?"認證失敗";????????}else?if(ADDRESS_EXCEPTION?==?statusCode)?{????????????e?=?"請求地址錯誤或不存在";????????}else?if(SERVER_EXCEPTION?==?statusCode)?{????????????e?=?"服務器狀態(tài)異常";????????}????????return?e;????}????????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;public?class?serviceUtils?{????????private?static?final?Logger?logger?=?LoggerFactory.getLogger(serviceUtils.class);????????????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;?//?狀態(tài)碼??????????????String?content?="";?//?返回結果????????????????Map<String,String>?resultMap?=?new?HashMap();????????????????//?創(chuàng)建httpclient對象????????CloseableHttpClient?httpClient?=?HttpClients.createDefault();????????????????//?設置參數(shù)????????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);????????????????????????????????//?接收狀態(tài)碼????????????????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);????????????????//?接收狀態(tài)碼????????????????statusCode?=?response.getStatusLine().getStatusCode();????????????}?catch?(Exception?e)?{????????????????e.printStackTrace();????????????}????????}????????????????//?判斷狀態(tài)碼????????if?(Constants.SUCCESS?==?statusCode)?{????????????HttpEntity?entity?=?response.getEntity();????????????content?=?EntityUtils.toString(entity,?"utf-8");????????????logger.info(content);????????}?else?{????????????//logger.error("狀態(tài)碼:"+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接口調用的處理”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。