Ios AFNetworking:Can';无法从AFHTTPRequestOperation获取响应字符串

Ios AFNetworking:Can';无法从AFHTTPRequestOperation获取响应字符串,ios,networking,afnetworking,nsurlrequest,Ios,Networking,Afnetworking,Nsurlrequest,有人吗?):在过去的两个小时里,我遇到了一个让我挠头的问题,很可能是我错过了一件非常简单的蠢事。当我从操作@AFNetworking调用响应字符串时,我不断收到一个构建错误。。。好像没有这样的财产 请看一下我的代码,解释一下这次我搞砸了什么:p。。谢谢:) //打印操作将向我显示操作字典,包括reponse字段,//但当我直接调用operation.response时,编译器将不会生成,并声明//“未找到AFHTTPRequestOperation的属性”。。。。有史以来最奇怪的事,对吧

有人吗?):在过去的两个小时里,我遇到了一个让我挠头的问题,很可能是我错过了一件非常简单的蠢事。当我从操作@AFNetworking调用响应字符串时,我不断收到一个构建错误。。。好像没有这样的财产

请看一下我的代码,解释一下这次我搞砸了什么:p。。谢谢:)


//打印操作将向我显示操作字典,包括reponse字段,//但当我直接调用operation.response时,编译器将不会生成,并声明//“未找到AFHTTPRequestOperation的属性”。。。。有史以来最奇怪的事,对吧

    NSString* responseString = [NSString stringWithUTF8String:[responseObject bytes]];
    //.. Rest o f my Code....

}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error retrieving data: %@", error);
}];

赫尔南,如果您希望JSON响应中有一个<代码> NS字典(代码)>,您应该考虑使用<代码> AjjSunRealStestActudio,因为在您的成功回调中有一个JSON字典。无论如何,如果要从

响应对象
获取词典,请尝试使用以下代码:

NSError *error = nil;
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
if (error) {
    NSLog(@"Error serializing %@", error);
}
NSLog(@"Dictionary %@", JSON);

在尝试使用AFNetworking从meetup.com api检索内容时(Mattt T.对一个伟大的框架表示感谢,顺便说一句),遇到了相同的错误-“操作无法完成。(Cocoa错误3840)”。意识到我遇到的问题是包含瑞典字符“Ø”的响应数据,导致解析错误。解决方案是在AFNetworking客户端的初始化中包含标题“Accept Charset:utf-8”。修正

- (id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }

    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];

    // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
    [self setDefaultHeader:@"Accept" value:@"application/json"];
    [self setDefaultHeader:@"Accept-Charset" value:@"utf-8"];

    return self;
}

我相信响应字符串位于“operation”对象内部,因此类似于:

...
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error retrieving data: %@", operation.responseString);
}];

我只想在NSLOG中打印operation.response,而不是操作本身……您是说,当您执行NSLOG(@“response object%@”,operation.response)时;-编译器会抱怨,但当您执行NSLog(@“Operation object%@”,Operation)时;它打印,并将响应作为其元素之一。您的控制台输出是什么。您是否尝试打印出操作响应的各个部分?例如,打印出状态代码
NSLog(@“操作响应状态=%@,[NSHTTPURLResponse localizedStringForStatusCode:Operation.response.statusCode])@Srinkanth-控制台输出是一系列十六进制数字。。并不像我想象的那样是一本字典。。。Thanks@Adam约翰逊:就是这样。。。我无法访问operation.response,也无法访问operation.response.statusCode。。。奇怪吧?谢谢你的回复:-)你好,安博:谢谢你的回复,朋友。。。我肯定会尝试响应对象的NSJSONSerialization,我是否按原样放置它?或者我应该将其转换为UTF8字符串?[NSString stringWithUTF8String:[responseObject bytes]]……我试过了,但服务器返回的响应没有被JSON解析器正确解析。。我得到:2012-12-16 19:17:14.536 Vidac[3561:19d03]错误序列化错误域=NSCOCAERRORDOMAIN Code=3840“该操作无法完成。(Cocoa错误3840)。“(字符0周围的值无效。)UserInfo=0x94917d0{NSDebugDescription=字符0周围的值无效。}打印响应对象描述:2012-12-16 19:17:42.592 Vidac[3561:19d03]Dictionary(null)您的服务器端似乎没有正确返回有效的JSON对象,或者您在编码方面有一些问题。尝试复制并粘贴JSON字符串响应,并使用验证器检查是否一切正常。另外,检查NSJSONSerialization选项。“Ø”是丹麦语。瑞典版本将是“Ö”。)
...
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error retrieving data: %@", operation.responseString);
}];