启用网络库日志
若使用 OkHttp
或 Retrofit
,需手动开启日志:
HttpLoggingInterceptor
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build();
OkHttpClient
设置日志(同上)。查看 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 为例):
IP:8888
)。Settings > Security > Install Certificate
)。Raw
或 Text
视图,分析请求头、参数、响应体。打开工具
Network Inspector
图标。Start Inspecting
。查看请求详情
// 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);
解答:
可通过抓包工具(如 Charles)修改响应数据:
Edit Response
。200
改为 500
)。解答:
需配置抓包工具信任应用的证书:
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();