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

  最近在进行前端开发的时候发现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功能将请求指向另一个地址。在掌握这些功能后,当我们在开发中需要模拟一些极端的情况时,就可以更好的进行调试了。

时间: 2024-08-09 10:38:54

使用Charles代理功能将网络请求定向至本地文件的相关文章

AndroidInject项目使用动态代理增加对网络请求的支持

详细代码: http://www.cnblogs.com/tiantianbyconan/p/3540427.html AndroidInject项目是我写的一个使用注解注入来简化代码的开源项目 https://github.com/wangjiegulu/androidInject 今天新增功能如下: 1. 增加@AIScreenSize注解,作用于属性,用于注入当前设备的屏幕大小(宽高) 2. 增加对网络请求的支持,使用动态代理实现:@AIGet注解,作用于接口方法,表示以GET来请求url

charles代理抓取https请求

注意!!!!! 手机同网域下代理需要关闭电脑 的防火墙~ 手机代理需要打开浏览器安装证书https://www.charlesproxy.com/getssl

iOS 网络请求--- 配置info.plist文件

一.配置info.plist <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 以上代码添加在info.plist文件倒数第三行处 (右击info.plist -> Open As ->Source Code),如下图:

Python - 网络 - 请求地址上的文件并下载

我们用到了requests库,由于是第三方的,必须下载 如果是python 2.x用下面命令 pip install requests python 3.x用下面命令 easy_install requests 运行结果: Searching for requestsReading https://pypi.python.org/simple/requests/Best match: requests 2.8.1Downloading https://pypi.python.org/packag

在chrome 怎么通过ajax请求加载本地文件

在chrome下面用Jquery 的load方法加载本地的html文件时会报错 我百度了一下是因为 谷歌浏览器内核为了安全机制,不允许这样方式访问其他页面,但是可以通过加 --enable-file-cookies --allow-file-access-from-files命令  加命令时 注意与前面的内容要用一空格隔开 然后重启浏览器,如果还是不行就重启电脑 原文地址:https://www.cnblogs.com/Dainney/p/10295691.html

iOS网络请求 添加全局代理 NSURLSessionConfiguration 解决方案

1.最近做项目.文件存储服务器是用的亚马逊的.如果直接访问.下载其资源速度很慢.所以需要在网络请求的时候添加一个代理.加速网络访问 2.代理服务器是一个HTTPS 的一个服务器 3.思路.解决方案.利用运行时机制(添加分类NSURLSession+Change)针对  NSURLSession 初始化添加代理对所有的网络请求进行拦截处理 #import "NSURLSession+Change.h" @implementation NSURLSession (Change) +(voi

Android 各大网络请求库的比较及实战,android请求库实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

各大网络请求框架的比较

原文:http://www.cnblogs.com/changyaohua/p/4992987.html 自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,

Android 几种网络请求的区别与联系

HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient. 在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择.而在Android 2.3版本及以后,HttpURLConnecti