由于AFNetworking 2.0在AFHTTPClient已经消失的青睐两位经理的:AFHTTPRequestOperationManager和AFHTTPSessionManager.迁移指南几乎没有说明每种情况下最好使用的情况.据我所知,与RESTful的基本交互JSON API可以分别使用它们中的每一个来实现.
什么是最合适的情况使用RequestOperationManager或SessionManager?
objective-c afhttpclient afhttprequestoperation afnetworking-2
当我尝试使用ip地址而不是主机名来告诉模拟器中的ios应用程序与本地服务器通信时,应用程序挂起在加载屏幕上,等待来自服务器的响应从未到来.
我是Objective C的新手,但代码是使用处理请求的AFNetowrking框架,并且对AFHTTPClient对象上的ip地址设置了不同的SCNetworkReachabilityFlags属性.
在调试期间捕获了AFHTTPClient对象的ip地址和主机名的以下属性.
<SCNetworkReachability 0xd26d8a0 [0x53b9ec8]>
{address = 127.0.0.1, flags = 0x00010002, if_index = 1}
<SCNetworkReachability 0xcf283f0 [0x53b9ec8]>
{name = localhost (server query active), flags = 0x80000000, if_index = 0}
Run Code Online (Sandbox Code Playgroud)
在AFHTTPClient.m类的startMonitoringNetworkReachability方法中,有以下if语句为ip地址触发但我不知道是否是问题:
/* Network reachability monitoring does not establish a baseline for IP addresses as
it does for hostnames, so if the base URL host is an IP address, the initial
reachability callback is manually triggered.
*/
if (AFURLHostIsIPAddress(self.baseURL)) {
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
dispatch_async(dispatch_get_main_queue(), ^{
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); …Run Code Online (Sandbox Code Playgroud) 我们需要在我们的应用程序中同时下载文件.
在早期版本的AFNetworking中,我们使用以下代码同时下载了2个文件:
(AFHTTPClient)
[_httpClient.operationQueue setMaxConcurrentOperationCount:MAX_CONCURRENT_OPERATIONS];
[self.httpClient enqueueHTTPRequestOperation:downloadObj.downloadOperation];
Run Code Online (Sandbox Code Playgroud)
现在我们要将AFNetworking升级到2.0.
而不是AFHTTPClient我们正在使用AFHTTPRequestOperationManager和能够设置
setMaxConcurrentOperationCount: value
Run Code Online (Sandbox Code Playgroud)
但是我们手动启动下载过程.我正在寻找替代(enqueueHTTPRequestOperation in 2.0),以便自动下载.
我的服务器正在生成签名上传到 S3 的信息。当我将该信息传递到 iOS 时,它适用于小文件。有时它也适用于较大的,但经常会超时。我目前正在通过 WIFI 在 iOS 7 上进行测试。对于大约 35 MB 的文件,它通常会在大约 60% 后超时,但有时它会完成,有时会更快超时。
我的服务器生成以下信息,我将其作为表单部分传递给我的 POST。(我也尝试过将其作为参数,结果类似):
以及一个 URL。
这是我生成上传的代码:
AFHTTPRequestOperation *op = [manager POST:url
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
if( throttle )
[formData throttleBandwidthWithPacketSize:kAFUploadStream3GSuggestedPacketSize delay:kAFUploadStream3GSuggestedDelay];
for( id key in parameters ) {
NSString *val = parameters[key];
[formData appendPartWithFormData:[val dataUsingEncoding:NSUTF8StringEncoding] name:key];
}
NSError *error;
if( ![formData appendPartWithFileURL:videoUrl name:@"file" fileName:@"movie.mov" mimeType:@"video/quicktime" error:&error] ) {
// handle the error
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) …Run Code Online (Sandbox Code Playgroud)