Tôi đang sử dụng Retrofit 2 (2.0.0-beta3) với ứng dụng OkHttp trong ứng dụng Android và cho đến nay mọi thứ trở nên tuyệt vời. Nhưng hiện tại tôi đang gặp vấn đề với OkHttp Interceptor. Máy chủ tôi đang giao tiếp đang lấy mã thông báo truy cập trong phần thân yêu cầu, vì vậy khi tôi chặn yêu cầu thêm mã thông báo xác thực hoặc trong phương thức xác thực Authenticator khi tôi cần thêm mã thông báo cập nhật, tôi cần sửa đổi yêu cầu cho mục đích này . Nhưng có vẻ như tôi chỉ có thể thêm dữ liệu vào tiêu đề chứ không phải trong nội dung yêu cầu đang diễn ra. Mã tôi đã viết cho đến nay như sau:Retrofit2: Sửa đổi thân yêu cầu trong Thiết bị chặn OkHttp
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (UserPreferences.ACCESS_TOKEN != null) {
// need to add this access token in request body as encoded form field instead of header
request = request.newBuilder()
.header("access_token", UserPreferences.ACCESS_TOKEN))
.method(request.method(), request.body())
.build();
}
Response response = chain.proceed(request);
return response;
}
});
bất cứ ai có thể chỉ cho tôi đi đúng hướng như thế nào để sửa đổi theo yêu cầu cơ thể để thêm thẻ truy cập của tôi (lần đầu tiên hoặc cập nhật sau khi refresh token)? Bất kỳ con trỏ nào đến đúng hướng sẽ được đánh giá cao.
nó sẽ là một ý tưởng tốt để đóng bộ đệm trong 'bodyToString()' trước khi trở –
@ 3k thats không cần thiết, Buffer doesnt phân bổ bất cứ điều gì có thể được đóng bên trong constructor. https://github.com/square/okio/blob/master/okio/src/main/java/okio/Buffer.java#L59 – Fabian