我在How to post HTTPS request using Retrofit?上发现了类似的帖子,但它对我帮助不大,所以我想知道你们中的一些人是否可以提供帮助。这是我关于SO的第一篇文章,如果您需要更多信息,请告诉我。
这是我的代码
public static OkHttpClient getUnsafeOkHttpClient() {
try {
final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[0];
}
} };
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts,
new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext
.getSocketFactory();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setSslSocketFactory(sslSocketFactory);
okHttpClient.setHostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
okHttpClient.networkInterceptors().add(new Interceptor() {
@Override
public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.header("user-agent", "Android")
.header("Basic","apikey")
.build();
return chain.proceed(request);
}
});
我知道我可以使用浏览器在我的服务器上访问https,但是当我尝试在这里做
时 public WebServiceCaller(OnServiceFinished listener) {
final String baseUrl = "https://myserver.com/";
this.listener=listener;
final OkHttpClient client = getUnsafeOkHttpClient();
this.retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
serviceCaller = retrofit.create(APIinterface.class);
}
然后它无法完成请求。一旦我从https移动它就可以了。所以我想我的问题是为什么它不起作用,我该如何解决这个问题?
这是我的依赖
compile 'com.google.code.gson:gson:2.4'
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.okhttp:okhttp:2.7.0'