我在共享扩展程序中遇到AFNetworking的问题。在didSelectPost
,我正在致电:
[[AuthClient sharedClient] POST: @"/v1/events"
parameters: params success: ^ (AFHTTPRequestOperation * operation, id responseObject) {
[self.extensionContext completeRequestReturningItems: nil completionHandler: nil];
}
failure: ^ (AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"error: %@", error);
[self.extensionContext cancelRequestWithError: error];
}
];
[AuthClient sharedClient]
使用单例模式获取AFHTTPSessionManager
的实例,其中NSURLSessionConfiguration
设置了背景标识符。
但是,成功或失败的回调都没有被调用,它只是无限期地挂起,直到扩展被杀死。有趣的是,HTTP请求在服务器端完成;完成永远不会被调用。
答案 0 :(得分:4)
我猜,问题不在AFNetworking
,但问题在于单例类。您尚未指定应用程序的体系结构,但我假设您可以在不同的视图控制器中同时使用相同的[AuthClient sharedClient]
单例调用多个API。因此,您实际上正在接收success
电话,但不是上述电话,而是控制器中的其他地方。我在基于UITabbarController
的应用程序中遇到了确切的问题,我在viewDidLoad
的不同视图控制器中进行API调用,我的测试人员不断更改所有选项卡。因此,我试图获得第一个视图控制器(第一个选项卡)的响应,并用于在第二个视图控制器(第二个选项卡)中获得响应,这是错误的!
答案 1 :(得分:1)
1)尝试在Postman中执行此请求,以检查正确的方式和参数,如果确定 - >> 2。
2)尝试使用像这样的会话配置
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
// Initialize Session Manager
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfiguration];
在这一点上,我们可以假设你的单音被初始化为另一个具有不同配置的请求。
4)about AFNetworking background
P.S。尝试在主线程上使用简单异步,在等待响应时使用微调器
答案 2 :(得分:1)
我尝试过的一些事情:
希望其中一些可以让您更接近于导致问题的原因。