ios - AFHTTPRequestOperation无响应而不是错误

标签 ios xcode nsurl nsurlrequest afnetworking

我正在使用AFHTTPRequestOperation来获取几个要解析的HTML页面。
我遇到的问题是,例如,如果我使用了错误的端口号,则在连接到服务器时,“失败”错误块不会触发。相反,会触发完成块,但响应字符串为nil。
我只是从ASIHTTP切换到AFNetworking,而使用ASIHTTP会产生错误。

当然应该提供一个错误吗?我该如何捕捉?

    NSString *urlString;
    urlString = [NSString stringWithFormat:@"%@://%@:%@/",kHttp,_IP,_Port];
    NSURL *url = [NSURL URLWithString:urlString];

    // Set authorization
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
    [httpClient setAuthorizationHeaderWithUsername:_User password:_Pass];

    NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"Info.htm" parameters:nil];
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        if ([self parseInfoLive:operation.responseString])
            _count_parsed++;
        if (_count_parsed == 2)
            [[NSNotificationCenter defaultCenter] postNotificationName:@"downloadsComplete" object:nil];
    }
                                     failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                         NSLog(@"Error during connection: %@",error.description);
                                         [[NSNotificationCenter defaultCenter] postNotificationName:@"errorConnecting" object:nil];
                                     }];
[operation start];

最佳答案

这似乎是AFNetworking中的错误,即使在提出此问题后2.5年也是如此。当响应包含一个特殊字符时会发生这种情况(它可以显示为空格,因为有时甚至文本查看器也无法解析它)。您可以尝试将收到的JSON字符串转换为NSUTF8StringEncoding,然后根据需要将其用作NSData。

NSURL *url = <YOUR REQUEST URL>
NSString *data = [NSString stringWithContentsOfURL:url];
NSData *metOfficeData = [data dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = [NSError new];
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:metOfficeData options:kNilOptions error:&error];

关于ios - AFHTTPRequestOperation无响应而不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451125/

相关文章:

ios - 快速将数据从 tableview 传递到 viewController

xcode - 我收到此错误 NSURLErrorDomain 错误 -999

ios - 是否有关于如何定期以异步方式将异步NSURLconnection发送到服务器的示例代码?

swift - NSURL 和俄罗斯域名

ios - NSURL 不会从字符串初始化为远程字体文件 (.TTF)

ios - 具有两个类的按钮上的 swift IBAction

ios - 使用 Swift4 JSONDecoder 解析 IOS FBSDKGraphRequest 结果

ios - 通过委托(delegate)将数据传递给 UITableView

c - 为什么我的程序可以在 Xcode 上运行,但不能在 codeblocks 上运行

ios - UIPageViewController 具有以编程方式生成的 View 数组