2

我正在使用 AFHTTPRequestOperation 来解析几个 HTML 页面。我遇到的问题是,如果我使用了错误的端口号,例如,当连接到服务器时,“失败”错误块不会触发。相反,完成块触发但响应字符串为零。我只是从 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];
4

1 回答 1

0

这似乎是 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];
于 2015-05-01T15:40:54.003 回答