我的应用程序出现问题,我需要能够查看或记录完整的网络请求,以便我可以确切地看到哪些参数正在使用哪些标题发布到我的服务器,目前它只显示我的URL ,有没有办法在android studio中这样做或者是否有一些代码我可以编写来显示这些数据?
为了进一步解释事情,似乎网络请求,参数和标题这两个词令人困惑,我使用google排球库htpp请求; GET,POST,PUT等。现在,当将数据发布到URL或通过特定URL获取数据时,我需要能够确认正确的参数和标题是否已发送到服务器。
答案 0 :(得分:1)
如果您正在讨论测试API的参数,您可能正在寻找REST客户端,例如:
验证服务。但在此之前,您应该有适当的所有Web服务文档。
<强>解决方案:强>
在Android Studio中,要调试代码,只需在代码上放置断点并按调试按钮执行
您可以通过单击显示断点的每一行的左侧来放置断点。
另请查看本教程: Simple Debugging in Android Studio并按照更多视频进行正确的调试。
答案 1 :(得分:1)
我建议您使用OkHttp进行所有网络通话。 OkHttp提供Interceptors,它将满足您的用途。
定义拦截器:
class LoggingInterceptor implements Interceptor {
@Override public Response intercept(Interceptor.Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
logger.info(String.format("Sending request %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
HttpUrl url = request.url(); // url of the request.
Headers reqHeaders = request.headers(); // Here you are able to access headers which are being sent with the request.
RequestBody body = request.body(); // provides body of request, which you can inspect to see what is being sent.
Response response = chain.proceed(request);
long t2 = System.nanoTime();
logger.info(String.format("Received response for %s in %.1fms%n%s",
response.request().url(), (t2 - t1) / 1e6d, response.headers()));
Headers resHeaders = response.headers(); // Headers received in the response.
return response;
}
}
使用它进行网络呼叫:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
Request request = new Request.Builder()
.url("http://www.publicobject.com/helloworld.txt")
.header("User-Agent", "OkHttp Example")
.build();
Response response = client.newCall(request).execute();
response.body().close();
探索Interceptors以获得更多自定义。