解決java.io.IOException: HTTPS hostname wrong: should be


 原因:當訪問HTTPS的網址。您可能已經安裝了服務器證書到您的JRE的keystore 。但這個錯誤是指服務器的名稱與證書實際域名不相等。這通常發生在你使用的是非標准網上簽發的證書。 

 解決方法:讓JRE相信所有的證書和對系統的域名和證書域名。以下是一小段代碼,可以用來實現這一目標

public class Servlet_test {

 public static void main(String[] args)throws Exception {
  URL url=new URL("https://localhost:8443/sso/servlet/SyncServletmethod=deleteOrg&appid=ec28d8fd22cf4bdf0122cf53e8a10002&orgcoding=001311&memo=");
  HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
  conn.setHostnameVerifier(new Servlet_test().new TrustAnyHostnameVerifier());
  conn.connect();
  InputStream ip= conn.getInputStream();
  BufferedReader br=new BufferedReader(new InputStreamReader(ip));
  String line;
  StringBuffer strb = new StringBuffer();
  while ((line = br.readLine()) != null) {
   strb.append(line);
  }
  String ss = strb.toString();
  System.out.println(ss);
 }d

 public class TrustAnyHostnameVerifier implements HostnameVerifier {
  public boolean verify(String hostname, SSLSession session) {
   // 直接返回true
   return true;
  }
 }
 
}
如果你為服務器證書經常改變,而自己的客戶端方也跟隨改變而頭痛的話,以上方法也適合。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM