charles请求转发_使用Charles代理功能将网络请求定向至本地文件

本文介绍了在前端开发中如何利用Charles的请求转发功能,将网络请求映射到本地文件,以实现在缺乏后台接口时进行数据Mock。通过示例展示了如何创建POST请求,以及通过Charles的Map Local功能将请求导向本地JSON文件,从而获取自定义的响应数据,便于调试。
摘要由CSDN通过智能技术生成

最近在进行前端开发的时候发现Charles一个非常牛叉的功能,就是可以通过代理将网络请求定向至本地文件。有了这个功能在进行iOS开发时就可以在缺少后台接口的情况下更加真实的进行数据mock了(反正我们公司的后台。。。不想吐槽了)。

我们先用NSURLSession发送一段简单的post请求:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://192.123.0.123:8080/login"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0f];

request.HTTPMethod= @"POST";

request.HTTPBody= [@"username=123456&password=123456"dataUsingEncoding:NSUTF8StringEncoding];

NSURLSession*session =[NSURLSession sharedSession];

NSURLSessionDataTask*task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError *_Nullable error) {

NSLog(@"error : %@",error);

}];

[task resume];

创建一个request对象,设置它的url为http://192.123.0.123:8080/login,当然其实这个url是不存在,因为它还没有被“实现”,设置网络请求缓存策略为忽视本地缓存数据直接请求服务端,超时时间为10秒,请求类型为post请求,body中的参数为username和password。之后创建一个会话对象session,并用这个会话对象创建一个task,最后通过[task resume]执行这个task任务,结果当然是没有结果。。。

打印error信息发现请求超时,我们通过Charles抓取了网络请求包,结果如下:

很明显,一个没有被“实现"的URL请求不到数据是理所当然的,但是我们通过Charles中的map local选项可以为这个没有被“实现”的URL伪造一份数据。

右键我们的网络请求包,然后将出现的列表拉到最下方选择map local选项。

在弹出的对话框中选择你想要将该请求指向的本地文件。

在这里我将该请求指向了桌面上一个叫做Directions.json的json文件,文件内容很简单。

在我们进行以上操作之后再来进行一次请求,结果如下:

Directions.json文件中的数据被当作请求的结果返回一个本不应该得到返回的请求在经过map后返回了我们自定义的数据,当然Charles并不仅仅只是能将请求指向本地文件而已,还可以通过map remote功能将请求指向另一个地址。在掌握这些功能后,当我们在开发中需要模拟一些极端的情况时,就可以更好的进行调试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值