簡體   English   中英

從重定向的URL頭獲取位置

[英]Get Location from redirected URL's header

我需要使用改型從API調用中獲取重定向URL。 如果我使用Postman測試網址,則會返回標頭,並且可以看到其中的網址。 這就是我進行改造的方式:

    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: Failed to connect to BASEURL/IP ADDRESS

沒關系,因為應該重定向到我的第二個URL沒有指向任何地方,所以如果我調用它,我應該找回它。 但是我一開始就調用了有效的URL,郵遞員給出了302 Found所以我認為在改裝時嘗試調用該URL卻無法正常工作,因此我得到了此錯誤消息。

問題在於,在錯誤情況下,我應該看到應該重定向的第二個URL,而不是第一個URL。 在onFailure情況下,如何獲取第二個URL?

通過禁用重定向解決了該問題,這是我在onResponse獲取響應的onResponse ,它包含消息中的URL。

   .followRedirects(false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM