gpt4 book ai didi

java - 从重定向 URL header 获取位置

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:02 25 4
gpt4 key购买 nike

我需要使用改造从 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: 无法连接到 BASEURL/IP 地址

没关系,因为我应该重定向的第二个 URL 没有指向任何地方,所以如果我调用它,我应该得到这个。但第一次我调用有效的 URL, postman 返回 302 Found,所以我认为当改造时返回此尝试调用 URL,但它不起作用,所以我返回此错误消息。

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

最佳答案

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

   .followRedirects(false)

关于java - 从重定向 URL header 获取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com