教你两分钟Mock OkHttp网络请求(以CSDN官网请求为例)

Posted 勤修

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你两分钟Mock OkHttp网络请求(以CSDN官网请求为例)相关的知识,希望对你有一定的参考价值。

目录

上下文和工具

步骤

Charles抓包

Postman Mock

 OKHttp发起请求

拓展知识

关于Http状态码

 关于OkHttp

总结


​​​​​​​上下文和工具

最近遇到一个case:将H5网页中发起的请求替换为android Native发起的请求。限制条件为后端无此接口的定义。在这里我们以CSDN官网请求为例进行说明。

如何快速Mock该请求呢?共分为三步:Charles抓包、Postman Mock、OKHttp发起。

所需工具如下:

1.Charles:V4.6.1版本;
2.PostMan:9.4.0版本;
3.OKHttp:com.squareup.okhttp3:okhttp:3.10.0.3

步骤

Charles抓包

步骤1:打开Charles;

步骤2:打开CSDN官网,查看Charles;

步骤3:右键该网络请求->点击"Copy cURL Request"

Postman Mock

步骤1:打开PostMan,点击import;

步骤2:选择Raw Text,粘贴,点击Continue;

 步骤3:点击Send发送网络请求;将该请求转换为OKHttp代码;复制即可。

 除了OKHttp请求之外,还支持Swift、C、php等。

 OKHttp发起请求

复制粘贴即可&子线程发起网络请求,Header内容可调整。

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://www.csdn.net/")
  .method("GET", null)
  .addHeader("Host", "www.csdn.net")
  .addHeader("cache-control", "max-age=0")
  .addHeader("sec-ch-ua-mobile", "?0")
  .addHeader("sec-ch-ua-platform", "\\"macOS\\"")
  .addHeader("upgrade-insecure-requests", "1")
  .addHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/96.0.4664.93 Safari/537.36")
  .addHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
  .addHeader("sec-fetch-site", "none")
  .addHeader("sec-fetch-mode", "navigate")
  .addHeader("sec-fetch-user", "?1")
  .addHeader("sec-fetch-dest", "document")
  .addHeader("accept-language", "zh-CN,zh;q=0.9")
  .addHeader("Cookie", "dc_session_id=10_1639217475457.541704; dc_sid=37cb10cf8843223cb9ebca11d00e6de9; uuid_tt_dd=10_19725877220-1639217475457-552295; csrfToken=tNX3XF6y0VyK1WNGp4j87-2_")
  .build();
Response response = client.newCall(request).execute();

拓展知识

关于Http状态码

 关于OkHttp

如何发起Get请求:

OkHttpClient client = new OkHttpClient();String run(String url) throws IOException 
  Request request = new Request.Builder()
      .url(url)
      .build();

  try (Response response = client.newCall(request).execute()) 
    return response.body().string();
  

如何发起Post请求:

public static final MediaType JSON
    = MediaType.get("application/json; charset=utf-8");OkHttpClient client = new OkHttpClient();String post(String url, String json) throws IOException 
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) 
    return response.body().string();
  

总结

本文以Mock CSDN官网请求为例,完成了Charles抓包、Postman mock、OkHttp发起三步骤。教你两分钟搞定H5请求到Native请求的转换。

以上是关于教你两分钟Mock OkHttp网络请求(以CSDN官网请求为例)的主要内容,如果未能解决你的问题,请参考以下文章

Hook OKhttp3模拟服务端响应请求返回mock数据

Android网络框架OkHttp之get请求(源码初识)

网络请求框架OkHttp3全解系列:OkHttp的基本使用

android网络框架OkHttp之get请求(源码初识)

干货 | 五分钟教你学会图像识别,一读就懂!

电脑上的垃圾软件太多怎么办?教你两招轻松清理