当前位置:首页 > 行业动态 > 正文

安卓开发怎么看向后台传的数据

使用 Android Studio 的 Logcat 查看网络请求日志

  1. 启用网络库日志
    若使用 OkHttpRetrofit,需手动开启日志:

    • OkHttp:添加 HttpLoggingInterceptor
      OkHttpClient client = new OkHttpClient.Builder()
          .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
          .build();
    • Retrofit:通过 OkHttpClient 设置日志(同上)。
  2. 查看 Logcat 输出

    安卓开发怎么看向后台传的数据

    • 过滤关键词:TAGOkHttp
    • 日志格式示例:
      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 局域网抓包 过滤协议(如 httphttps

操作步骤(以 Charles 为例):

  1. 电脑启动 Charles,设置代理端口(默认 8888)。
  2. 手机连接同一 Wi-Fi,手动配置代理(IP:8888)。
  3. 在 Charles 中安装根证书到手机(Settings > Security > Install Certificate)。
  4. 捕获请求后,查看 RawText 视图,分析请求头、参数、响应体。

使用 Android Studio Network Inspector

  1. 打开工具

    安卓开发怎么看向后台传的数据

    • 运行应用后,点击 Android Studio 右上角的 Network Inspector 图标。
    • 选择目标进程,点击 Start Inspecting
  2. 查看请求详情

    • 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)修改响应数据:

  1. 在 Charles 中右键请求,选择 Edit Response
  2. 修改返回的 JSON 或状态码(如将 200 改为 500)。
  3. 保存后观察应用对异常的处理逻辑。

问题2:如果后台接口使用 HTTPS,如何查看明文数据?

解答
需配置抓包工具信任应用的证书:

安卓开发怎么看向后台传的数据

  1. 客户端抓包(Charles/Fiddler)
    • 安装工具生成的根证书到手机。
    • 在工具中启用 HTTPS 解密(SSL Proxying)。
  2. 代码信任证书(仅限调试环境):
    // 忽略 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();