我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助:
RestAdapter adapter = (new RestAdapter.Builder()).
setEndpoint(baseUrl).
setRequestInterceptor(interceptor).
setProfiler(profiler).
setClient(client).
setExecutors(MyApplication.getWebServiceThreadPool()).
setLogLevel(LogLevel.FULL).
setLog(new RestAdapter.Log() {
@Override
public void log(String msg) {
Log.i(TAG, msg);
}
}).
build();
编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。
改装2.0:
更新:@Marcus Pöhls
登录改装2
改造2完全依赖OkHttp进行任何网络操作。由于OkHttp是Reverfit2的对等依赖项,因此一旦Reverfit2作为稳定版本发布,您就不需要添加额外的依赖项。
OKHTTP2.6.0附带了一个日志拦截器作为内部依赖项,您可以直接将其用于您的改型客户端。改版2.0.0-Beta2仍然使用OkHttp 2.5.0。未来的版本将增加对更高OkHttp版本的依赖。这就是您需要手动导入日志拦截器的原因。将以下行添加到build.gradle文件中的gradle导入中,以获取日志拦截器依赖项。
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
您也可以访问Square的GitHub页面来了解这个拦截器
添加日志记录以改进2
在开发应用程序时,出于调试的目的,集成一个日志功能来显示请求和响应信息是很好的。由于在reverfit2中不再默认集成日志记录,我们需要为OKHTTP添加一个日志记录拦截器。幸运的是,OkHttp已经附带了这个拦截器,您只需要为您的OKHttpClient激活它。
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
// set your desired log level
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
// add your other interceptors …
// add logging as last interceptor
httpClient.addInterceptor(logging); // <-- this is the important line!
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
我们建议将日志记录作为最后一个拦截器,因为这也会将您使用以前的拦截器添加的信息记录到您的请求中。
日志级别
记录太多的信息会炸毁你的Android监视器,这就是为什么OKHTTP的日志拦截器有四个日志级别:无、基本、头和正文。我们将带您遍历每个日志级别并描述它们的输出。
更多信息请访问:改造2-日志请求和响应
老答:
不再登录改版2。开发团队删除了日志记录功能。老实说,日志记录功能并不可靠。Jake Wharton明确指出,记录的消息或对象是假设的值,它们不能被证明是真的。到达服务器的实际请求可能有一个更改的请求体或其他内容。
即使默认情况下没有集成日志记录,您也可以利用任何Java日志记录程序,并在定制的OkHttp拦截器中使用它。
关于改造2的更多信息,请参阅:改造-入门并创建Android客户端
我使用了setloglevel(loglevel.full).setlog(new AndroidLog(“your_log_tag”))
,它对我有帮助。
更新。
您也可以尝试使用reverfit.client.response
作为响应模型进行调试
在Vertx WebClient中记录传出http请求和响应的最简单方法是什么。我正在寻找类似于httpserver LoggerHandler的东西,但接下来是webclient的输出请求。
我试图记录应用程序中的每个传入请求和传出响应。我正在使用jee 6,所以我没有ContainerRequestFilter和ContainerResponseFilter类。所以我决定用滤镜。 我用@WebFilter(“/*”)注释了一个类,并实现了Filter接口。我成功地读取了请求头和请求正文。我也很难阅读响应标题和响应正文。下面是代码片段 MyHttpServletResponse seW
问题内容: 我想记录一个axis2客户端发出的所有请求/响应。我试图在http://code.google.com/support/bin/answer.py?hl=zh_CN&answer=15137中创建一个称为describer 的文件,但没有成功(我没有日志文件)。 请求是通过https发出的,我不确定是否重要。我试过了 和 没有成功。 问题答案: 对于SOAP消息的Axis2客户端日志记
我有一个spring应用程序,它可以与Mobile交换JSON。Spring控制器如下所示: 我想知道,记录http请求正文和响应正文的最佳方式是什么?目前,我有一个定制的json消息转换器,它在从json中创建bean之前记录一个请求正文。我使用CustomTraceInterceptor记录响应正文。不幸的是,CustomTraceInterceptor不允许记录请求正文。 任何更好的解决方案
我正在尝试将API请求负载和响应数据记录到Azure Application Insight。使用跟踪我可以记录。但是我想知道什么是将请求和响应数据记录到application Insight的最佳方法。因为数据是巨大的,所以API调用的数量会更多。我不能仅仅使用跟踪来跟踪数十万个请求和响应数据。我尝试了一些博客,比如使用itelemetryinitializer/httpcontext.feat
应用程序应异步(在单独的线程中)记录以下信息,而不会影响客户端。 请求HTTP方法和URI 如果我们在过滤器中使用,那么spring将无法再次使用它进行json到对象的映射。在输入流到对象映射期间的某个地方,我们可以插入记录器吗? 更新: 我们可以在MessageConverter中编写日志代码,但这似乎不是一个好主意。