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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java請求https接口實現(xiàn)

Java請求https接口實現(xiàn)

更新時間:2020-08-26 15:50:35 來源:動力節(jié)點 瀏覽2656次

用兩種方式分別實現(xiàn)了,第一種是jdk原生的,代碼稍微多點,第二種是基于httpclient4版本的。在我的機器上,訪問同一個接口原生的性能要好很多(前者900ms,后者5.7s左右),httpclient主要性能消耗在"HttpResponse res = client.execute(post);",大約占總執(zhí)行時間的90%。

private?static?final?String?METHOD_POST?=?"POST";??
????private?static?final?String?DEFAULT_CHARSET?=?"utf-8";??
??????
????public?static?String?doPost(String?url,?String?params,?String?charset,?int?connectTimeout,?int?readTimeout)?throws?Exception?{??
????????String?ctype?=?"application/json;charset="?+?charset;??
????????byte[]?content?=?{};??
????????if(params?!=?null){??
????????????content?=?params.getBytes(charset);??
????????}??
??????????
????????return?doPost(url,?ctype,?content,?connectTimeout,?readTimeout);??
????}??
????public?static?String?doPost(String?url,?String?ctype,?byte[]?content,int?connectTimeout,int?readTimeout)?throws?Exception?{??
????????HttpsURLConnection?conn?=?null;??
????????OutputStream?out?=?null;??
????????String?rsp?=?null;??
????????try?{??
????????????try{??
????????????????SSLContext?ctx?=?SSLContext.getInstance("TLS");??
????????????????ctx.init(new?KeyManager[0],?new?TrustManager[]?{new?DefaultTrustManager()},?new?SecureRandom());??
????????????????SSLContext.setDefault(ctx);??
??
????????????????conn?=?getConnection(new?URL(url),?METHOD_POST,?ctype);???
????????????????conn.setHostnameVerifier(new?HostnameVerifier()?{??
????????????????????@Override??
????????????????????public?boolean?verify(String?hostname,?SSLSession?session)?{??
????????????????????????return?true;??
????????????????????}??
????????????????});??
????????????????conn.setConnectTimeout(connectTimeout);??
????????????????conn.setReadTimeout(readTimeout);??
????????????}catch(Exception?e){??
????????????????log.error("GET_CONNECTOIN_ERROR,?URL?=?"?+?url,?e);??
????????????????throw?e;??
????????????}??
????????????try{??
????????????????out?=?conn.getOutputStream();??
????????????????out.write(content);??
????????????????rsp?=?getResponseAsString(conn);??
????????????}catch(IOException?e){??
????????????????log.error("REQUEST_RESPONSE_ERROR,?URL?=?"?+?url,?e);??
????????????????throw?e;??
????????????}??
??????????????
????????}finally?{??
????????????if?(out?!=?null)?{??
????????????????out.close();??
????????????}??
????????????if?(conn?!=?null)?{??
????????????????conn.disconnect();??
????????????}??
????????}??
??????????
????????return?rsp;??
????}??
??
????private?static?class?DefaultTrustManager?implements?X509TrustManager?{??
??
????????@Override??
????????public?void?checkClientTrusted(X509Certificate[]?arg0,?String?arg1)?throws?CertificateException?{}??
??
????????@Override??
????????public?void?checkServerTrusted(X509Certificate[]?arg0,?String?arg1)?throws?CertificateException?{}??
??
????????@Override??
????????public?X509Certificate[]?getAcceptedIssuers()?{??
????????????return?null;??
????????}??
??
????}??
??????
????private?static?HttpsURLConnection?getConnection(URL?url,?String?method,?String?ctype)??
????????????throws?IOException?{??
????????HttpsURLConnection?conn?=?(HttpsURLConnection)?url.openConnection();??
????????conn.setRequestMethod(method);??
????????conn.setDoInput(true);??
????????conn.setDoOutput(true);??
????????conn.setRequestProperty("Accept",?"text/xml,text/javascript,text/html");??
????????conn.setRequestProperty("User-Agent",?"stargate");??
????????conn.setRequestProperty("Content-Type",?ctype);??
????????return?conn;??
????}??
??
????protected?static?String?getResponseAsString(HttpURLConnection?conn)?throws?IOException?{??
????????String?charset?=?getResponseCharset(conn.getContentType());??
????????InputStream?es?=?conn.getErrorStream();??
????????if?(es?==?null)?{??
????????????return?getStreamAsString(conn.getInputStream(),?charset);??
????????}?else?{??
????????????String?msg?=?getStreamAsString(es,?charset);??
????????????if?(StringUtils.isEmpty(msg))?{??
????????????????throw?new?IOException(conn.getResponseCode()?+?":"?+?conn.getResponseMessage());??
????????????}?else?{??
????????????????throw?new?IOException(msg);??
????????????}??
????????}??
????}??
??
????private?static?String?getStreamAsString(InputStream?stream,?String?charset)?throws?IOException?{??
????????try?{??
????????????BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(stream,?charset));??
????????????StringWriter?writer?=?new?StringWriter();??
??
????????????char[]?chars?=?new?char[256];??
????????????int?count?=?0;??
????????????while?((count?=?reader.read(chars))?>?0)?{??
????????????????writer.write(chars,?0,?count);??
????????????}??
??
????????????return?writer.toString();??
????????}?finally?{??
????????????if?(stream?!=?null)?{??
????????????????stream.close();??
????????????}??
????????}??
????}??
??
????private?static?String?getResponseCharset(String?ctype)?{??
????????String?charset?=?DEFAULT_CHARSET;??
??
????????if?(!StringUtils.isEmpty(ctype))?{??
????????????String[]?params?=?ctype.split(";");??
????????????for?(String?param?:?params)?{??
????????????????param?=?param.trim();??
????????????????if?(param.startsWith("charset"))?{??
????????????????????String[]?pair?=?param.split("=",?2);??
????????????????????if?(pair.length?==?2)?{??
????????????????????????if?(!StringUtils.isEmpty(pair[1]))?{??
????????????????????????????charset?=?pair[1].trim();??
????????????????????????}??
????????????????????}??
????????????????????break;??
????????????????}??
????????????}??
????????}??
??
????????return?charset;??
????}

Java代碼 

public?static?JSONObject?post(String?url,?String?json)?{??
????????HttpClient?client?=?new?DefaultHttpClient();??
????????client?=?WebClientDevWrapper.wrapClient(client);??
????????HttpPost?post?=?new?HttpPost(url);??
????????JSONObject?response?=?null;??
????????try?{??
????????????StringEntity?s?=?new?StringEntity(json);??
????????????s.setContentEncoding("UTF-8");??
????????????s.setContentType("application/json");??
????????????post.setEntity(s);??
??
????????????Long?startTime?=?System.currentTimeMillis();??
????????????HttpResponse?res?=?client.execute(post);??
????????????System.out.println(System.currentTimeMillis()?-?startTime);??
????????????if?(res.getStatusLine().getStatusCode()?==?HttpStatus.SC_OK)?{??
????????????????HttpEntity?entity?=?res.getEntity();??
????????????????String?charset?=?EntityUtils.getContentCharSet(entity);??
????????????????if(charset?==?null){??
????????????????????charset?=?"utf-8";??
????????????????}??
????????????????response?=?new?JSONObject(new?JSONTokener(??
????????????????????????new?InputStreamReader(entity.getContent(),?charset)));??
????????????}??
????????}?catch?(Exception?e)?{??
????????????throw?new?RuntimeException(e);??
????????}??
????????return?response;??
????}??
??
????public?static?class?WebClientDevWrapper?{??
????????public?static?HttpClient?wrapClient(HttpClient?base)?{??
????????????try?{??
????????????????SSLContext?ctx?=?SSLContext.getInstance("TLS");??
????????????????X509TrustManager?tm?=?new?X509TrustManager()?{??
????????????????????@Override??
????????????????????public?X509Certificate[]?getAcceptedIssuers()?{??
????????????????????????return?null;??
????????????????????}??
??
????????????????????@Override??
????????????????????public?void?checkClientTrusted(??
????????????????????????????java.security.cert.X509Certificate[]?chain,??
????????????????????????????String?authType)??
????????????????????????????throws?java.security.cert.CertificateException?{??
??????????????????????????
????????????????????}??
??
????????????????????@Override??
????????????????????public?void?checkServerTrusted(??
????????????????????????????java.security.cert.X509Certificate[]?chain,??
????????????????????????????String?authType)??
????????????????????????????throws?java.security.cert.CertificateException?{??
??????????????????????????
????????????????????}??
????????????????};??
????????????????ctx.init(null,?new?TrustManager[]?{?tm?},?null);??
????????????????SSLSocketFactory?ssf?=?new?SSLSocketFactory(ctx,?SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);??
????????????????ClientConnectionManager?ccm?=?base.getConnectionManager();??
????????????????SchemeRegistry?sr?=?ccm.getSchemeRegistry();??
????????????????sr.register(new?Scheme("https",?443,?ssf));??
????????????????return?new?DefaultHttpClient(ccm,?base.getParams());??
????????????}?catch?(Exception?ex)?{??
????????????????ex.printStackTrace();??
????????????????return?null;??
????????????}??
????????}??
????}

以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java請求https接口實現(xiàn)”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩精品成人免费观看 | 国产精品福利自产拍网站 | 99国产精品视频免费观看 | 色偷偷91久久综合噜噜噜 | 精品日韩在线视频 | 色伊伊| 免费a视频在线观看 | 91精品免费国产高清在线 | 高清国产一区二区三区 | 香蕉伊人久久 | 国产综合亚洲欧美日韩一区二区 | 九九热在线视频观看这里只有精品 | 日本乱人伦片中文字幕三区 | 久久免费手机视频 | 久久a热6| 亚洲国产天堂在线mv网站 | 亚洲国产精品综合久久网络 | 奇米影视777欧美在线观看 | 久久国产亚洲高清观看5388 | 九九热在线免费视频 | 欧洲97色综合成人网 | 亚洲欧美日韩中文在线 | 中文字幕欧美日韩va免费视频 | 欧美国产精品一区二区免费 | 乱色美www女麻豆 | 日本一级做人免费视频 | 夭天干天天做天天免费看 | 免费超爽大片黄网站 | 中文字幕国产一区 | 在线视频亚洲一区 | 国产亚洲精品久久久久久无 | 午夜视频福利 | 一区二区三区在线视频观看 | 国产自愉怕一区二区三区 | 国产免费自拍视频 | 青草视频网站 | 91精品乱码一区二区三区 | 免费一级欧美毛片 | 欧美视频一区二区三区在线观看 | 久久久噜噜噜久久 | 视频一区二区三区在线 |