教你两分钟Mock OkHttp网络请求(以CSDN官网请求为例)
Posted 勤修
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你两分钟Mock OkHttp网络请求(以CSDN官网请求为例)相关的知识,希望对你有一定的参考价值。
目录
上下文和工具
最近遇到一个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官网请求为例)的主要内容,如果未能解决你的问题,请参考以下文章