java http请求练习(可以传输PKCS证书)

	/**
	 * 页面请求接口
	 * @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;

	}

猜你喜欢

转载自blog.csdn.net/qq_33770498/article/details/80525255