【发布时间】:2015-04-29 02:43:38
【问题描述】:
您好,我有一个返回 JSON 格式的示例 url。但是当我使用 AFNetWorking2.0 从该 URL 获取响应时,我没有得到正确的响应。我也在这里发送我的代码。
- (void)testHTTPS {
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager setSecurityPolicy:securityPolicy];
[manager GET:@"xxxxx"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSString* newStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
}
我得到的 JSON Dic 总是为零。如果我打印“newstr”,我会得到 html 格式的响应。谁能找到正确的方法?
我已经按照你说的约翰做了,但我得到了以下结果
错误:错误域=com.alamofire.error.serialization.response Code=-1016 “请求失败:不可接受的内容类型:文本/html” UserInfo=0x7ffb39c52ed0 {com.alamofire.serialization.response.error.response= { URL: xxxxx } { 状态码: 200, headers { “缓存控制”=“公共,最大年龄=10800”; “内容编码”= gzip; “内容长度”= 2922; “内容类型”=“文本/html”; 日期 =“格林威治标准时间 2015 年 4 月 29 日星期三 06:49:54”; Expires = "2015 年 4 月 29 日星期三 09:49:55 GMT"; “上次修改时间”=“格林威治标准时间 2015 年 4 月 1 日星期三 03:19:39”; 服务器 = "ECAcc (hhp/9ABE)"; Vary = "接受编码"; “X-缓存”=命中; }},NSErrorFailingURLKey = XXXXX,com.alamofire.serialization.response.error.data = ,NSLocalizedDescription =请求失败:不可接受的内容类型:文本/ HTML}
【问题讨论】:
-
似乎响应不是 JSON,而是 XML/HTML(参见
Content-Type),您可能需要考虑为此设置适当的响应序列化程序。 -
特别是回复是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" conten -
嗨,holex... 但是如果我在 onlinejsonviewer 中通过该链接,它会显示 JSON 格式的结果。如果我在搜索栏中通过该链接,那么我也会得到 JSON 结果
-
我建议您查看显示 headers properly 的那个 URL,上面写着
Content-Type: text/html,而不是 JSON – 内容的视觉外观在这里并不真正相关,我害怕。 -
PLUS: 在移动设备上,原始链接已被重定向到移动 HTML 网站:m.raaga.com/redis/facade.php?svc=home-mobile&l=T,这绝对是一个 HTML 页面;您的原始链接看起来只能在桌面浏览器中使用。
标签: ios objective-c json afnetworking-2