Tôi đã sử dụng Retrofit để thực hiện các yêu cầu Http và phân tích cú pháp Json và tôi thích cách bật nhật ký gỡ lỗi. Nhật ký cho phép xem yêu cầu nội dung, url ... rất hữu ích. Khi Retrofit sử dụng OkHttp, tôi tự hỏi nếu OkHttp cũng có một cách để kích hoạt các bản ghi cho mỗi yêu cầu được thực hiện.OkHttp - Bật nhật ký
Trả lời
Tính năng đánh chặn hiện đang được xem xét, nhưng bạn có thể tạo phiên bản okHttp của riêng bạn bằng tính năng này bằng cách áp dụng các thay đổi mã trong the pull request.
Bạn có thể thực hiện các chức năng mà bạn muốn với một cái gì đó như thế này
// Create an interceptor which catches requests and logs the info you want
RequestInterceptor logRequests= new RequestInterceptor() {
public Request execute(Request request) {
Log.i("REQUEST INFO", request.toString());
return request; // return the request unaltered
}
};
OkHttpClient client = new OkHttpClient();
List<RequestInterceptor> requestInterceptors = client.requestInterceptors();
requestInterceptros.add(logRequests);
A test được bao gồm trong yêu cầu kéo nếu bạn muốn xem chi tiết.
Tôi sẽ phải cảnh báo bạn trước khi sử dụng tính năng này. Có thể có những thay đổi đối với API đánh chặn vì nó chưa được hợp nhất. Không sử dụng nó với mã sản xuất, nhưng nó vô hại đủ để thử nghiệm cá nhân.
Chưa có. Nhưng có một số interceptors feature đang được phát triển để dễ dàng.
Sử dụng một Interceptor
, bạn có thể xác định các lớp sau:
class LoggingInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
Log.d("OkHttp", String.format("Sending request %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();
Log.d("OkHttp", String.format("Received response for %s in %.1fms%n%s",
response.request().url(), (t2 - t1)/1e6d, response.headers()));
return response;
}
}
Và thêm nó:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
cung cấp cho tôi hành động không được hỗ trợ –
Có một giải pháp chính thức từ Quảng trường (nhân viên) bây giờ. Bạn có thể thử: https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor
- 1. Bật ghi nhật ký cho JDBC
- 2. Cách bật ghi nhật ký của Ehcache
- 3. Bật ghi nhật ký phía máy chủ trong SignalR
- 4. Zend Bật ghi nhật ký truy vấn SQL
- 5. Bật nhật ký truy vấn chung của MySQL với JDBC
- 6. Cách bật ghi nhật ký địa chỉ IP với Log4Net
- 7. Bật biểu tượng nhật ký sự cố trong Xcode 4.2
- 8. Bật ghi nhật ký Java Swing (công văn phím)
- 9. cách bật tính năng ghi nhật ký gói trong log4j
- 10. Cách bật/tắt ghi nhật ký bằng Log4net
- 11. apache httpclient ghi nhật ký mật khẩu trong văn bản rõ ràng khi gỡ lỗi ghi nhật ký được bật
- 12. Nhật ký nằm ở đâu?
- 13. OkHttp gzip post body
- 14. Android OkHttp InputStream java.IOException.closed
- 15. OkHttp + Picasso + Retrofit
- 16. Nhật ký sự kiện Windows vs Nhật ký văn bản
- 17. Cách tạo biểu đồ nhật ký nhật ký trong python
- 18. Nhật ký cơ sở dữ liệu và nhật ký tệp
- 19. Hiển thị nhật ký java.util.logging.Logger trong nhật ký Android Studio
- 20. Ghi nhật ký Python.DEBUG không ghi nhật ký
- 21. Sự khác biệt giữa Nhật ký và Nhật ký?
- 22. ghi nhật ký log4net không tạo tệp nhật ký
- 23. Tệp nhật ký đầu ra nhật ký Git
- 24. Làm cách nào để bật ghi nhật ký mức DEBUG với Jetty được nhúng?
- 25. Bật ghi nhật ký DEBUG trên Blu R1 HD (điện thoại Amazon)
- 26. Bật tính năng ghi nhật ký lỗi trong plugin maven jetty 7
- 27. iOS7: Nhật ký: Không thể bật quảng cáo chiêu hàng MKMapView trên thiết bị này
- 28. Làm cách nào để bật ghi nhật ký với Postgres.app trên OS X?
- 29. Làm cách nào để bật ghi nhật ký đầy đủ có tên/liên kết/DNS?
- 30. Cách bật ghi nhật ký chi tiết trong wiremock không độc lập
Tính năng này đã được triển khai: https://github.com/square/okhttp/wiki/Interceptors – kotucz