카테고리 없음

[자바] TLS, JKS 로 URL HTTP 통신하기 - 송신 및 수신

xemaker 2018. 10. 23. 08:41

StringBuffer sb = new StringBuffer();

sb.append("<?xml version=1.0' encoding='utf-8'?>");

sb.append("<request>")

sb.append("<user></user>");

sb.append("</request>")


String url="http://aaa.com/post.do";

URL url1=new URL(url);

HttpsURLConnection conn=(HttpsURLConnection)url1.openConnection();

conn.setHostnameVerifier(new HostnameVerifier(){

@Override

public boolen verify(String arg0, SSLSession arg1){

return true;

}

});

SSLContext sslContext=SSLContext.getInstance("TLS")

sslContext.init(null,new TruestManager[]{new X509TrustManager(){

@Override

public X509cerificate[] getAcceptedIssuers(){

return null;

}

@Override

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{

try{

KeyStore keyStore=KeyStore.getInstance("JKS");

String certPath=System.getProperty("java.home")+"/lib/security/aa.jks";

keyStore.load(new FileInputStream(new File(certPath)), "11".toCharArray());

TruestManagerFactory tmf=TruestManagerFactory.getInstance(TruestManagerFactory.getDefaultAlgorithm());

tmf.init(keyStore);

TruestManager[] tms=tmf.getTrustManagers();

((X509TrustManager)tms[0]).checkServerTrusted(chain, authType);

}catch(Excetion e){

}

}

@Override

public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException{

}

}}, null);

String s=sb.toString();

conn.setSSLSocketFactory(sslContext.getSocketFactory());

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type","application/xml");

conn.setRequestProperty("Content-Length", ""+Integer.toString(s.getBytes().length));

conn.setDoOutput(true);

conn.setDoInput(true);


OutputStream out=conn.getOutputStream();

out.write(s.getBytes("UTF-8"));

out.flush();


BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line=null;

while((line=reader.readLine())!=null){

System.out.println(line);

}

in.close();


xml 형식으로 원격 서버로 데이터를 보내고 받는다.