HTTPS获取请求在android retrofit2中不起作用



我想使用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在改造中的应用

最新更新