2017-02-27 32 views
0

當我試圖設置HostNameverifier與connnecion然後得到下面的錯誤。Htttps Post請求不使用cerificate

類型HttpsURLConnection中的方法setHostnameVerifier(HostnameVerifier)不適用於參數(AlwaysTrustHostnameVerifier)。 enter image description here

import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.URL; 
import java.net.URLEncoder; 
import java.security.cert.CertificateException; 
import java.security.cert.X509Certificate; 
import javax.net.ssl.HttpsURLConnection; 
import javax.net.ssl.X509TrustManager; 
public class Https { 
public static void main(String[] args) throws IOException { 
    sendPost("https://*", "MBSUV aa123"); 
} 
public static void sendPost(final String request, final String urlParameters) throws IOException { 
    URL url = new URL(request); 
    HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 
    connection.setHostnameVerifier(new AlwaysTrustHostnameVerifier()); 
    connection.setDoOutput(true); 
    connection.setDoInput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    connection.setRequestProperty("charset", "utf-8"); 
    connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); 
    connection.setUseCaches (false); 
    DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 
    connection.disconnect();   
} 
} 
class AlwaysTrustHostnameVerifier implements X509TrustManager 
{ 
    public void checkClientTrusted(X509Certificate[] x509 , String authType) throws CertificateException { /* nothing */ } 
    public void checkServerTrusted(X509Certificate[] x509 , String authType) throws CertificateException { /* nothing */ } 
    public X509Certificate[] getAcceptedIssuers() { return null; }  
} 
+0

使用排槍或改裝庫獲得,或者通過互聯網發送數據。 – aleksandrbel

回答

0

嘗試使用

connection.setHostnameVerifier((HostnameVerifier) new AlwaysTrustHostnameVerifier()); 
+0

線程「main」中的異常java.lang.ClassCastException:AlwaysTrustHostnameVerifier無法轉換爲javax.net.ssl.HostnameVerifier由於AlwaysTrustHostnameVerifier實現了X509TrustManager –