/**
* 页面请求接口
* @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证书)
最新推荐文章于 2024-07-05 00:28:16 发布