我想使用android retrofit2向我的服务器发送https get请求。
如果我用http发送相同的请求,它就可以正常工作。
每当我发送https请求不起作用时。
我的终点:
https://xxxx:xxx@xxx/rest/xxx
我的代码片段:
String base = uname + ":" + pwd;
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.header("Authorization", base);
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
OkHttpClient client = httpClient.build();
Retrofit rulesRetrofit = new retrofit2.Retrofit.Builder()
.baseUrl(HttpsRuels)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
cloudRulesDataInterface = rulesRetrofit.create(APInterface.class);
Call < ResponseBody > rulesCall = cloudRulesDataInterface.getRulesFromCloud();
rulesCall.enqueue(new Callback < ResponseBody > () {
@Override
public void onResponse(Call < ResponseBody > call, Response < ResponseBody > response) {
if (response.isSuccessful()) {
try {
Log.d(TAG, "response from success =" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
Log.d(TAG, "response from error =" + response.errorBody().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call < ResponseBody > call, Throwable throwable) {
}
});
我总是收到来自服务器的未经授权的响应。当我在邮差做测试时,它起作用了好的但在android中不起作用。
请参阅此答案。您需要在改装代码逻辑中启用SSL证书使用。
HTTPS在改造中的应用