上一篇
安卓开发怎么看向后台传的数据
- 行业动态
- 2025-04-22
- 10
使用 Android Studio 的 Logcat 查看网络请求日志
启用网络库日志
若使用OkHttp
或Retrofit
,需手动开启日志:- OkHttp:添加
HttpLoggingInterceptor
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build();
- Retrofit:通过
OkHttpClient
设置日志(同上)。
- OkHttp:添加
查看 Logcat 输出
- 过滤关键词:
TAG
或OkHttp
。 - 日志格式示例:
D/OkHttp: --> POST https://api.example.com/login D/OkHttp: Content-Type: application/json; charset=UTF-8 D/OkHttp: {"username":"test","password":"123456"}
- 过滤关键词:
通过抓包工具分析网络请求
工具名称 | 适用场景 | 关键配置 |
---|---|---|
Charles | 全局代理抓包 | 设置手机代理为 Charles 的 IP 和端口(如 charles.proxy:8888 ),安装根证书以解密 HTTPS |
Fiddler | 本地代理抓包 | 启用 HTTPS 解密,手机代理指向电脑 IP |
Wireshark | 局域网抓包 | 过滤协议(如 http 或 https ) |
操作步骤(以 Charles 为例):
- 电脑启动 Charles,设置代理端口(默认 8888)。
- 手机连接同一 Wi-Fi,手动配置代理(
IP:8888
)。 - 在 Charles 中安装根证书到手机(
Settings > Security > Install Certificate
)。 - 捕获请求后,查看
Raw
或Text
视图,分析请求头、参数、响应体。
使用 Android Studio Network Inspector
打开工具
- 运行应用后,点击 Android Studio 右上角的
Network Inspector
图标。 - 选择目标进程,点击
Start Inspecting
。
- 运行应用后,点击 Android Studio 右上角的
查看请求详情
- Request:展示 URL、方法、Headers、Body。
- Response:展示状态码、Headers、返回数据。
- 示例:
// Request Body (POST /login) { "username": "user1", "password": "pass123" } // Response Body (200 OK) { "token": "abcdef123456" }
代码中手动打印数据(调试用)
// 打印 JSON 请求体 JSONObject json = new JSONObject(); json.put("key", "value"); Log.d("NetworkDebug", "Request Body: " + json.toString()); // 打印 URL 参数(GET 请求) String url = "https://api.example.com/search?q=keyword"; Log.d("NetworkDebug", "URL: " + url);
常见问题与解答
问题1:如何模拟后台返回的异常数据?
解答:
可通过抓包工具(如 Charles)修改响应数据:
- 在 Charles 中右键请求,选择
Edit Response
。 - 修改返回的 JSON 或状态码(如将
200
改为500
)。 - 保存后观察应用对异常的处理逻辑。
问题2:如果后台接口使用 HTTPS,如何查看明文数据?
解答:
需配置抓包工具信任应用的证书:
- 客户端抓包(Charles/Fiddler):
- 安装工具生成的根证书到手机。
- 在工具中启用 HTTPS 解密(
SSL Proxying
)。
- 代码信任证书(仅限调试环境):
// 忽略 SSL 验证(慎用!) OkHttpClient client = new OkHttpClient.Builder() .sslSocketFactory(new TrustManagerFactory().getTrustManagers(), new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) {} @Override public void checkServerTrusted(X509Certificate[] chain, String authType) {} @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } }) .build();