从重定向的URL的标题中获取位置

我需要使用改型从API调用中获取重定向URL。如果我用Postman测试URL,则会返回Header,并且可以看到其中的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: Failed to connect to BASEURL/IP ADDRESS

没关系,因为我应该重定向到的第二个URL没有指向任何地方,因此如果我调用它,我应该找回它。但是我一开始就调用了有效的URL,邮递员回了,302 Found所以我认为在进行改造时,它会尝试调用该URL,但它不起作用,因此,我会得到此错误消息。

问题是在错误情况下,我应该看到第二个URL,而不是第一个URL。在onFailure情况下,如何获取第二个URL?

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

   .followRedirects(false)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

改造从重定向URL获取参数

来自分类Dev

Jmeter-从重定向URL获取参数

来自分类Dev

如何从重定向的URL获取查询数据

来自分类Dev

从重定向URL下载文件

来自分类Dev

JSOUP从重定向链接获取html内容

来自分类Dev

从毕加索获取重定向的URL

来自分类Dev

Jsoup获取重定向URL

来自分类Dev

获取最终重定向的URL

来自分类Dev

获取最终重定向的URL

来自分类Dev

获取最终重定向的URL

来自分类Dev

重定向位置,但不重定向URL

来自分类Dev

在bash中获取重定向位置

来自分类Dev

PHP:查找重定向URL的位置

来自分类Dev

从重定向路由问题设计

来自分类Dev

在Tricky重定向上获取最终重定向URL

来自分类Dev

从重定向操作本身重定向错误*

来自分类Dev

受信任的Web活动:从重定向的URL导航回本机活动

来自分类Dev

JMETER Recording Controller,从重定向URL获得始终相同的状态和随机数值

来自分类Dev

PHP标题位置重定向不起作用

来自分类Dev

为什么我的表单不重定向到标题中的链接?

来自分类Dev

如何从RestTemplate获取重定向的URL?

来自分类Dev

重定向后如何获取窗口URL?

来自分类Dev

获取Laravel重定向对象URL

来自分类Dev

python pycurl获取最终的URL重定向

来自分类Dev

如何使用AFNetworking获取重定向的URL?

来自分类Dev

从邮递员获取重定向的URL

来自分类Dev

获取发生重定向的网页的URL

来自分类Dev

获取重定向页面的URL

来自分类Dev

使用curl获取URL的重定向目标