2016-11-28 10 views
0

cURLの安全でないモード(-k)に相当するものを使用できるようにする必要があります。本質的にcURLを使って私は何かをすることができますcurl -XPOST -k http://my.link:port/path/to/endpointcurl -k in Okhttp3/retrofit

今私は私のJavaアプリケーションで同じことをする必要があります。私はretrofitとokhttp3を使用します。

public interface MyEndpoint { 
    @Headers("Content-Type: application/json") 
    @POST("/path/to/endpoint") 
    Call<MyValue> getData(
     @Body RequestBody requestBody, 
     ); 
} 

答えて

0

あなたは安全でないトラストマネージャは、SSLソケットファクトリ、およびホスト名検証を作成し、次のコードをクライアントにあなたをOkHttp作成できます

現在、私のインターフェイスは次のようになります。コードはOkCurl実装から削除されています。これを行うRemeberは、httpsによって提供されるセキュリティを無効にします。

private static X509TrustManager createInsecureTrustManager() { 
    return new X509TrustManager() { 
     @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { 
     } 

     @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { 
     } 

     @Override public X509Certificate[] getAcceptedIssuers() { 
     return new X509Certificate[0]; 
     } 
    }; 
    } 

    private static SSLSocketFactory createInsecureSslSocketFactory(TrustManager trustManager) { 
    try { 
     SSLContext context = SSLContext.getInstance("TLS"); 
     context.init(null, new TrustManager[] {trustManager}, null); 
     return context.getSocketFactory(); 
    } catch (Exception e) { 
     throw new AssertionError(e); 
    } 
    } 

    private static HostnameVerifier createInsecureHostnameVerifier() { 
    return new HostnameVerifier() { 
     @Override public boolean verify(String s, SSLSession sslSession) { 
     return true; 
     } 
    }; 
} 

でクライアントを作成する -

OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
X509TrustManager trustManager = createInsecureTrustManager(); 
SSLSocketFactory sslSocketFactory = createInsecureSslSocketFactory(trustManager); 
builder.sslSocketFactory(sslSocketFactory, trustManager); 
builder.hostnameVerifier(createInsecureHostnameVerifier()) 
OkHttpClient client = builder.build(); 
関連する問題