- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在为我的 iPhone 应用程序 (Objective-C) 使用 AFHTTPRequestOperation
。我需要为我的应用启用 SSL
固定。
但是,无论我包含在我的应用程序包中的证书是正确的还是错误的,调用我的 API 总是成功的。
如果我在我的应用程序中固定的证书是错误的证书,我的服务器 API 的调用是否应该失败?
这是我在应用程序中的代码:
- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure{
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = self.responseSerializer;
operation.shouldUseCredentialStorage = self.shouldUseCredentialStorage;
operation.credential = self.credential;
//operation.securityPolicy = self.securityPolicy;
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"wrong_cert" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
[securityPolicy setAllowInvalidCertificates:NO];
[securityPolicy setValidatesDomainName:YES];
[securityPolicy setPinnedCertificates:@[certData]];
[operation setSecurityPolicy:securityPolicy];
[operation setCompletionBlockWithSuccess:success failure:failure];
operation.completionQueue = self.completionQueue;
operation.completionGroup = self.completionGroup;
return operation;
}
请指教。谢谢。
最佳答案
我使用 AFNetworking 成功实现了 SSL Pinning。在进行测试之前,请确保您的证书有效。看下面的代码片段。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager sharedManager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
AFHTTPRequestOperation *post = [manager POST:[NSString stringWithFormat:@"%@",url] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
[delegate requestCompleted:responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if([error.domain isEqualToString:@"NSURLErrorDomain"] && error.code == -1012){
//SSL Pinning request failed
} else if (!operation.cancelled) {
}
}];
[post start];
关于ios - 带 SSL 固定的 AFHTTPRequestOperation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43452059/
我正在 swift 中使用 AFNetworking,并且在将以下代码转换为 swift 时遇到问题 objective-c [client GET:url parameters:nil succes
使用发送几个post请求 - (AFHTTPRequestOperation *)POST:(NSString *)URLString parameters
如何中断执行 AFHTTPRequestOperation?如果 HTTP 请求已经开始但尚未完成,这是否可能? 最佳答案 中断是什么意思?如果您想取消操作,则只需调用 -cancel 即可。请参阅:
我搜索了很多并看到了一些答案,但我仍然不确定如何解决它:我只想在操作完成时执行一些 void 函数。 我的代码: NSMutableURLRequest *request = [NSMutableUR
我有这样一种情况,我需要向服务器发出多个请求,而后续请求将取决于先前的请求 1) request 1 2) process data 3) request 2 based on data in ste
我的应用程序中有一些网络服务调用。这是我如何调用它们的示例 +(void) login:(NSDictionary *) loginParams { AppDelegate *appDeleg
有没有办法取消 AFHTTPRequestOperation?例如,我用它来下载 PLIST。所以我打算有一个按钮来取消下载或任务。有办法吗? 更新: operationQueue = [NSOper
伙计,被这个难住了。尝试使用 AFNetworking 下载文件我能做的最好的事情就是在 downloadProgressBlock 中捕获进度字节。我已经尝试了许多不同的 AFNetworking
我使用的是最新的 AFNetworking V2.0。如果可达性可用,我已经设置了一系列要在 AFHTTPRequestOperationManager 的操作队列上运行的操作。我在 appDeleg
我在 swift 中使用AFHTTPRequestOperation,如下所示: let operation : AFHTTPRequestOperation? = manager.GET(reque
我是 objective-c 的完全菜鸟,所以请原谅这个愚蠢的问题。 我已经能够按照 AFNetworking 2.0 的指南使用 AFHTTPRequestOperationManager 发送帖子
我有一个用于测试 AFNetworking 的应用程序API。它从服务器下载文档并将它们放置在应用程序的沙箱中。用户可以开始下载、暂停/恢复下载和取消下载。按预期启动、暂停和恢复所有工作。然而,取消做
使用 iOS 有一段时间了,但现在我在一个复杂的客户端-服务器应用程序中工作,这需要我: 向服务器发送请求(使用 AFHttpRequestOperation)响应是一个区间或一个字典 如果我得到一个
我正在连接到我自己的 Web 服务,我认为它正在发回一个 gzipped 响应,该响应由 AF Networking 库在后台解压缩。当存在接受编码 gzip header 时,我已验证我的服务器正在
所以我试图在线访问一个 json 文件,当我使用 AFHTTPRequestOperation 方法运行完成 block 时,我可以获取 JSON 文件的内容。但是当我尝试在完成 block 之外使用
我正在尝试制作一个使用 AFHTTPClient 与 API 通信的 iOS 应用程序。第一步是对用户进行身份验证,为此,我使用以下代码: -(void)authorize { NSURLRe
我希望函数在 AFHTTPRequestOperation 完成之前不返回,但我不知道该怎么做,在此先感谢。 -(BOOL)download { BOOL ret = TRUE; AFHTTPRequ
我刚刚更新到 AFNetworking 2.0,我正在重写我的代码以下载数据并将其插入到核心数据中。 我下载 JSON 数据文件(从 10-200mb 文件不等),将它们写入磁盘,然后将它们传递给后台
我发现自己在整个代码中使用 AFHTTPRequestOperationManager 重复了很多代码,所以我在考虑将它子类化,这样我就可以将它设置为一个单例,然后将所有代码放在子类,而不是通过我的项
我在使用 AFNetworking 时遇到问题。我在我的代码中这样写: AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperation
我是一名优秀的程序员,十分优秀!