Ios 我们如何模拟azure端点?

Ios 我们如何模拟azure端点?,ios,azure,proxy,charles-proxy,azure-api-management,Ios,Azure,Proxy,Charles Proxy,Azure Api Management,我正在使用azure API端点…azure api.net/…。当我尝试使用Charles代理查看HTTP请求/响应时,HTTP响应为空。当我关闭代理时,请求会起作用 为了自动化测试的目的,我想拦截请求并模拟响应 我可以使用Charles proxy查看其他服务器的其他HTTPs端点。因此,我相信azure有一些特殊之处,阻止了请求的完成 Azure是如何知道中间有代理的,而不是和客户说话的? 是否需要配置azure API以允许Charles工作?(因为查看HTTP流量对于开发非常有用)

我正在使用azure API端点<代码>…azure api.net/…。当我尝试使用Charles代理查看HTTP请求/响应时,HTTP响应为空。当我关闭代理时,请求会起作用

为了自动化测试的目的,我想拦截请求并模拟响应

我可以使用Charles proxy查看其他服务器的其他HTTPs端点。因此,我相信azure有一些特殊之处,阻止了请求的完成

    Azure是如何知道中间有代理的,而不是和客户说话的?
  • 是否需要配置azure API以允许Charles工作?(因为查看HTTP流量对于开发非常有用)
  • 是否有其他方法允许对azure的流量进行模拟?例如,主机重定向
我使用的是标准的iOS网络代码

NSURL *url = [NSURL URLWithString:@"https://MyDomain.azure-api.net/a/b/2?subscription-key=myKey"];

[[[NSURLSession sharedSession] dataTaskWithRequest:[NSURLRequest requestWithURL:url]
                                 completionHandler:
  ^(NSData *data, NSURLResponse *response, NSError *error) {

    NSLog(@"%@, error: %@", [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding], error);
    ;

}] resume];
下面是Charles Proxy的截图。连接请求后没有响应


为了拦截请求并返回假响应,您可以使用

为了能够做到这一点,您应该在从Xcode调试时记录响应,或者使用文档

在执行测试之前,请调用

stub = [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
             return [request.URL.absoluteString isEqualToString:@"https://MyDomain.azure-api.net/a/b/2?subscription-key=myKey"];
         }
                           withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) {
                                           NSString *fixture = OHPathForFileInBundle(@"fakeResponse.json", nil);
                                           return [OHHTTPStubsResponse responseWithFileAtPath:fixture
                                                                                   statusCode:200
                                                                                      headers:@{@"Content-Type":@"text/json"}];
                                       }];
在执行测试之后,您应该调用

[OHHTTPStubs removeStub:stub];

“fakeResponse.json”必须是仅添加到测试目标的文件,并且可以使用不同的
json
文件进行不同的测试。例如,您可以传递一个带有错误或空内容的
JSON
,以测试您的应用程序是否按照您希望的方式运行。

如果您在Windows平台上工作,您是否尝试过使用Fiddler()获取HTTP流量?我没有看到不能用Fiddler处理的网络流量。你用什么在你的iOS应用程序上发出请求?你能在你的代码中访问JSON响应吗?@Moxy-我们使用
NSURLConnection
AFNetworking
包装器。当Charles没有运行时,我们可以在代码中看到请求和响应。当Charles运行时,由于SSL错误导致连接失败。@astaykov-我相信Fiddler捕获的数据包不会用于SSL数据。我们需要有效地进行中间人攻击,以从SSL连接捕获数据。这就是Charles使用自签名证书所做的。但是,它不适用于此SSL连接,我不知道为什么。我认为我有解决您的问题的方法,但我需要您发布代码,说明您在何处发出网络请求,以及是什么对象发出请求,以便尽可能精确。因此,请张贴你的代码的一部分!