ios - AFNetworking:接收“数字”而不是GET请求文本

标签 ios objective-c afnetworking afnetworking-2

我正在尝试使用AFHTTPRequestOperationManager和AFHTTPResponseSerializer设置GET请求。但是,没有收到适当的GET Request响应(像我使用Charles调试代理得到的响应),而是收到了很多随机数。我尝试使用该主题(AFNetworking - JSON: Receiving "numbers" instead of JSON)的解决方案,但由于字典为空,因此未成功。

GET /scripts/wsisa.dll/WService=wsedumeritasil/seplog01 HTTP/1.1
Host: skyward.iscorp.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Proxy-Connection: keep-alive
Cookie: BIGipServerSkywardPool18-Meritas=4200349962.47873.0000; BIGipServerSkywardWebspeed=2388410634.47873.0000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive

这是我的代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPResponseSerializer *serializer = [AFHTTPResponseSerializer serializer];
serializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer = serializer;
manager.requestSerializer = [AFJSONRequestSerializer serializer] ;
NSDictionary *dict = @{
                       @"Host" : @"skyward.iscorp.com",
                       };
[manager GET:@"https://skyward.iscorp.com/scripts/wsisa.dll/WService=wsedumeritasil/seplog01"
  parameters:dict
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"%@", responseObject);
         NSError *error;
         NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error];
      NSLog(@"Dictionary: %@", [jsonDict description]);   
     }
     failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         NSLog(@"error");
     }];

这是我的输出:
<3c21444f 43545950 45204854 4d4c2050 55424c49 4320222d 2f2f5733 432f2f44 54442048 ...
Dictionary: (null)

最佳答案

十六进制数字的长序列只是NSData的标准十六进制表示形式。如果将NSData的十六进制表示形式转换为字符串,则可以看到以下内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD H

那似乎是HTML页面的开始。

如果您不是登录responseObject而是登录[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding],那么您将看到意外检索的HTML页面的全部内容。

您正在使用AFHTTPResponseSerializer(我猜您这样做是因为AFJSONResponseSerializer无法正常工作?)的事实似乎支持了这一假设。通常,如果您收到JSON响应,则坚持使用AFJSONResponseSerializer(它将为您完成JSONObjectWithData)。

您应与网络服务提供商确认API,并确保已执行必要的身份验证和/或正确使用了API。显然,请求的格式不正确或URL不正确,或者未进行必要的身份验证。

关于ios - AFNetworking:接收“数字”而不是GET请求文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26173435/

相关文章:

ios - 如何让 2 个泛型使用相同的 T 类型

ios - 如何在 X 时间后在后台杀死应用程序

objective-c - 使用 AFNetworking 的 setImageWithURL 时如何配置缓存

ios - Xcode 7/iOS 9 中的 Api 调用错误(如何在 plist 中设置 App Transport Security)

ios - UIRefreshControl - 当 UITableViewController 在 UINavigationController 内时,beginRefreshing 不起作用

ios - 在 UICollectionView 数据源中使用深度索引路径

ios - 带有 JSON 主体的 POST 请求 AFNetworking 2.0

objective-c - arm64 上的 objc_msgSend 宏

ios - 在 ios 7 的 xcode 5 中从雅虎财经获取在线股票数据

ios - 下载图像时调整 UITableViewCell 高度