从响应中获取标题(Retrofit/OkHttp客户端)

dkn*_*ack 40 android json jackson retrofit okhttp

我正在使用OkHttp客户端和Jackson进行Json Serialization的Retrofit,并希望得到响应的标题.

我知道我可以扩展OkClient并拦截它.但这是在反序列化过程开始之前.

我基本上需要的是将标题与反序列化的Json对象一起使用.

Epi*_*rce 44

使用Retrofit 1.9.0,如果使用接口的Callback异步版本,

@GET("/user")
void getUser(Callback<User> callback)
Run Code Online (Sandbox Code Playgroud)

然后你的回调将收到一个Response对象

    Callback<User> user = new Callback<User>() {
        @Override
        public void success(User user, Response response) {

        }

        @Override
        public void failure(RetrofitError error) {

        }
    }
Run Code Online (Sandbox Code Playgroud)

哪个方法叫做 getHeaders()

    Callback<User> user = new Callback<User>() {
        @Override
        public void success(User user, Response response) {
            List<Header> headerList = response.getHeaders();
            for(Header header : headerList) {
                Log.d(TAG, header.getName() + " " + header.getValue());
            }
        }
Run Code Online (Sandbox Code Playgroud)

对于Retrofit 2.0的界面,您可以使用Call<T>.

对于Retrofit 2.0的Rx支持,您可以使用 Observable<Result<T>>


Spa*_*Bao 37

在Retrofit 2.0.0中,您可以获得如下标题:

public interface Api {
    @GET("user")
    Call<User> getUser();
}

Call<User> call = api.getUser();
call.enqueue(new Callback<User>() {
    @Override
    public void onResponse(Call<User> call, Response<User> response) {
        // get headers
        Headers headers = response.headers();
        // get header value
        String cookie = response.headers().get("Set-Cookie");
        // TODO
    }

    @Override
    public void onFailure(Call<User> call, Throwable t) {
        // TODO
    }
});
Run Code Online (Sandbox Code Playgroud)

  • `List <String> cookieList = headers.toMultimap().get("set-cookie");`using`foreach`遍历列表 (4认同)