问题描述
如何在java(https url)中使用cer文件调用Restful API。所以我使用以下命令将 cer 文件生成为 jks 文件。
keytool -importcert -file D:\onmagcert.cer -keystore D:\server_npcikeystore.jks -alias "abc1234"
然后我在 HTTPSURL 连接中添加了密钥库文件,但得到“未知异常”请有人帮助我
JSONObject jsobj=new JSONObject();
jsobj.put("BankID","ABCD");
String str_jsonparams = String.valueOf(jsobj);
System.out.println("PU_Auth str_jsonparams->"+str_jsonparams);
appPathCertificate="D:/server_npcikeystore.jks";
System.out.println("appPathCertificate--->"+appPathCertificate);
char[] passphrase = "cedge1".tochararray(); //password
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(appPathCertificate),passphrase); //path
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keystore);
SSLContext context = SSLContext.getInstance("TLS");
TrustManager[] trustManagers = tmf.getTrustManagers();
context.init(null,trustManagers,null);
SSLSocketFactory sf = context.getSocketFactory();
URL url = new URL("https://enachuat.npci.org.in:8086/stsBankResponse");
System.setProperty("javax.net.ssl.keyStore",appPathCertificate);
System.setProperty("javax.net.ssl.keyStorePassword","cedge1");
System.setProperty("javax.net.ssl.keyStoreType","JKS");
HttpsURLConnection conn = (HttpsURLConnection ) url.openConnection();
conn.setSSLSocketFactory(sf);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setUseCaches (false);
OutputStream os = conn.getoutputStream();
os.write(str_jsonparams.getBytes());
os.flush();
System.out.println("Response code :"+conn.getResponseCode());
conn.disconnect();
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)