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

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

Java請求https接口實現

更新時間:2020-08-26 15:50:35 來源:動力節點 瀏覽2474次

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 寡妇一级a毛片免费播放 | 国产成人永久免费视 | 青青青爽在线视频观看大全 | 91九色视频 | 羞羞视频免费网站在线 | 亚洲狠狠成人综合网 | 天天插夜夜爽 | 欧美资源站| 99热精品6 | 久久久精品麻豆 | 永久黄网站色视频免费观看99 | 麻豆va一区二区三区久久浪 | 日本三级欧美三级 | 色综合网亚洲精品久久 | 欧美伦理一区 | 四虎国产永久在线观看 | 亚洲色四在线视频观看 | 波多野结衣 一区二区 | 亚洲精品国产一区二区在线 | 天天爱夜夜操 | 欧美jizzhd极品欧美 | 欧美亚洲高清日韩成人 | 一及毛片 | 欧美成人午夜视频 | 999毛片免费观看 | 精品国产第一国产综合精品 | 欧美四虎影院 | 亚洲国产成人精品一区91 | 精品视频免费播放 | 日韩色视频一区二区三区亚洲 | 一区二区不卡在线观看 | 全部免费毛片免费播放 | 国产美女a做受大片免费 | 在线视频日韩精品 | 中文字幕亚洲日韩无线码 | aaaa日本| 男人的天堂在线免费视频 | 国产a一级毛片午夜剧场14 | 999热视频 | 久久r视频| 亚洲国产精品久久久久婷婷老年 |