/** * 页面请求接口 * @param urlpath * @param method * @param data * @param pkcsPath * @param pkcsPassword * @return */ public static Map urlLink(String urlpath, String method, String data, String pkcsPath, String pkcsPassword) { BufferedInputStream bufferedInputStream = null; InputStream inputStream = null; DataInputStream dataInputStream = null; BufferedReader bufferedReader = null; BufferedOutputStream bufferedOutputStream = null; OutputStream outputStream = null; Integer resultCode = null; ByteArrayOutputStream byteArrayOutputStream = null; String textType = null; try { Boolean isHttps = true; if (urlpath.toLowerCase().startsWith("https")) { isHttps = true; } else if (urlpath.toLowerCase().startsWith("http")) { isHttps = false; } else { return null; } URL url = new URL(urlpath); if (isHttps == true) { HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection(); SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); TrustManager trustManager[] = {new X509TrustManager() { //检查本地证书 @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { /*System.out.println("本地证书名称:"+s); if(x509Certificates != null){ System.out.println("本地证书内容为" + JSON.toJSONString(x509Certificates)); }*/ } //检查服务端证书 @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { /*System.out.println("服务器证书名称:"+s); if(x509Certificates != null){ System.out.println("服务器证书内容为" + JSON.toJSONString(x509Certificates)); }*/ } @Override public X509Certificate[] getAcceptedIssuers() { //System.out.println("调用了本函数"); return new X509Certificate[0]; } }}; if (pkcsPath == null) { sslContext.init(null, trustManager, new SecureRandom()); } else { File file = new File(pkcsPath); KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(new FileInputStream(file), pkcsPassword.toCharArray()); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore, pkcsPassword.toCharArray()); sslContext.init(keyManagerFactory.getKeyManagers(), trustManager, new SecureRandom()); } SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); httpsURLConnection.setSSLSocketFactory(sslSocketFactory); if (data != null) { httpsURLConnection.setDoInput(true); } httpsURLConnection.setDoOutput(true); httpsURLConnection.setRequestMethod(method); httpsURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); httpsURLConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); httpsURLConnection.setRequestProperty("Connection", "Keep-Alive");// 维持长连接 httpsURLConnection.setRequestProperty("Charset", "UTF-8"); httpsURLConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2"); httpsURLConnection.connect(); if(data!= null) { outputStream = httpsURLConnection.getOutputStream(); bufferedOutputStream = new BufferedOutputStream(outputStream); bufferedOutputStream.write(data.getBytes()); bufferedOutputStream.flush(); bufferedOutputStream.close(); } resultCode = httpsURLConnection.getResponseCode(); //System.out.println(resultCode); inputStream = httpsURLConnection.getInputStream(); textType = httpsURLConnection.getRequestProperty("Content-Type"); } else { HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); if (data != null) { urlConnection.setDoInput(true); } urlConnection.setDoOutput(true); urlConnection.setRequestMethod(method); urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); urlConnection.setRequestProperty("Connection", "Keep-Alive");// 维持长连接 urlConnection.setRequestProperty("Charset", "UTF-8"); urlConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2"); urlConnection.connect(); if(data!= null){ outputStream = urlConnection.getOutputStream(); bufferedOutputStream = new BufferedOutputStream(outputStream); bufferedOutputStream.write(data.getBytes()); bufferedOutputStream.flush(); bufferedOutputStream.close(); } resultCode = urlConnection.getResponseCode(); inputStream = urlConnection.getInputStream(); textType = urlConnection.getRequestProperty("Content-Type"); } if(resultCode == HttpURLConnection.HTTP_OK){ byteArrayOutputStream = new ByteArrayOutputStream(); byte by[] = new byte[1024]; bufferedInputStream = new BufferedInputStream(inputStream); int k = 0; while ((k =bufferedInputStream.read(by))!= -1){ byteArrayOutputStream.write(by,0,k); } Map map = new HashMap(); map.put("output",byteArrayOutputStream.toByteArray()); map.put("code",resultCode); map.put("type",textType); return map; }else { return null; } } catch (Exception e) { e.printStackTrace(); } finally { if (outputStream != null) { try { outputStream.flush(); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } } if (bufferedOutputStream != null) { try { bufferedOutputStream.flush(); bufferedOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } } if (inputStream != null) { try { inputStream.close(); } catch (Exception e) { } } if (bufferedReader != null) { try { dataInputStream.close(); } catch (Exception e) { } } if (bufferedInputStream != null) { try { bufferedInputStream.close(); } catch (Exception e) { } } if (dataInputStream != null) { try { dataInputStream.close(); } catch (Exception e) { } } if(byteArrayOutputStream != null){ try { byteArrayOutputStream.flush(); byteArrayOutputStream.close(); }catch (Exception e){ e.printStackTrace(); } } } return null; }
java http请求练习(可以传输PKCS证书)
猜你喜欢
转载自blog.csdn.net/qq_33770498/article/details/80525255
今日推荐
周排行