Java 从重定向的URL获取位置';s头

Java 从重定向的URL获取位置';s头,java,android,retrofit,Java,Android,Retrofit,我需要使用改型从API调用获取重定向URL。 如果我使用Postman测试url,它会返回标题,我可以在其中看到url。这就是我如何构建我的改装: private static Interceptor interceptor = chain -> { okhttp3.Response response = chain.proceed(chain.request()); Log.d("REDIRECT","to"+response.header("Location")

我需要使用改型从API调用获取重定向URL。 如果我使用
Postman
测试url,它会返回标题,我可以在其中看到url。这就是我如何构建我的改装:

    private static Interceptor interceptor = chain -> {
    okhttp3.Response response = chain.proceed(chain.request());
    Log.d("REDIRECT","to"+response.header("Location"));
    return response;
};

public static NetworkInterface getNetworkInterface() {
    if (networkInterface == null) {
        serverGson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
                .setLenient()
                .create();
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
                .followRedirects(true)
                .addInterceptor(interceptor)
                .build();
        Retrofit retrofit = new Retrofit.Builder()
                .client(client)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(serverGson))
                .baseUrl(BASE_URL)
                .build();
        networkInterface = retrofit.create(NetworkInterface.class);
    }
    return networkInterface;
}
这是我的API调用:

    Disposable api = Server.getNetworkInterface().oAuthUser("param",
            "param","param",
            "param","param")
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(response-> {
                    if (response.isSuccessful()) {
                        String responseHeader = response.headers().toString();
                        Log.d("auth header",responseHeader);
                    }
            }, error-> {
                error.printStackTrace();
            });
这就是我得到的:

2019-03-29 14:55:35.935 22434-22434/com.package.app W/System.err:java.net.ConnectException:无法连接到BASEURL/IP地址

没关系,因为第二个应该重定向的URL没有指向任何地方,所以如果我调用它,我应该返回这个。但是这是我第一次调用有效的URL,邮递员返回了
302 find
,所以我想当改型返回时,我尝试调用URL,但它不起作用,所以我返回了此错误消息


问题是,在错误的情况下,我应该看到第二个URL,在那里我应该被重定向,而不是第一个URL。在onFailure案例中,如何获取第二个URL?

通过禁用重定向解决了这个问题,我将在
onResponse
中返回响应,它包含消息中的URL

   .followRedirects(false)

通过禁用重定向解决了这个问题,我将在
onResponse
中返回响应,它包含消息中的URL

   .followRedirects(false)