在 afnetworking iOS 中获取字符串响应

Posted

技术标签:

【中文标题】在 afnetworking iOS 中获取字符串响应【英文标题】:Fetch a string response in afnetworking iOS 【发布时间】:2016-12-06 09:41:57 【问题描述】:

我正在使用一个以字符串格式返回响应的网络服务,下面是响应表单

URLdecoded token: PjXoTuRmatcMCFXgQ43Jr8vb4Ux9mdqJyxYsVZ170NS76Q== 
base64 decoded in byte: [B@16c1d8a7 random code in byte: [B@1076c79d newhash in byte: [B@662b1cdc concatData in byte: [B@1873e3eb Base64.encodeBase64String(concatData): PjXoTuRmatcMCFXgQ43Jr8vb4Ux9mdqJyxYsVZ170NS76Q== 
localToken: PjXoTuRmatcMCFXgQ43Jr8vb4Ux9mdqJyxYsVZ170NS76Q%3D%3D 
sms code: 225182;  
OK - International

我的问题是如何获取它,因为它目前正在失败块中,并且错误显示响应不是对象类型。

【问题讨论】:

你得到什么错误? 你的代码是什么?你把什么作为 responseSerializer? 错误域 = NSCocoaErrorDomain 代码 = 3840 “JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。” UserInfo=NSDebugDescription=JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。 以上是我遇到的错误 manager.responseSerializer.acceptableContentTypes= [NSSet setWithObject:@"text/plain"];使用它作为响应序列化器 【参考方案1】:

试试这个-manager.responseSerializer = [AFHTTPResponseSerializer serializer];

【讨论】:

manager.responseSerializer = [AFHTTPResponseSerializer 序列化器];【参考方案2】:

您可能会执行以下操作:

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setStringEncoding:NSUTF8StringEncoding];
manager.requestSerializer=serializer;
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

在你的成功块中,你需要通过 responseObject 初始化你的字符串,像这样:

NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

这里的字符串是你正确的回答。

【讨论】:

以上是关于在 afnetworking iOS 中获取字符串响应的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 使用 AFNetworking 获取图像保持缓存

AFNetworking 中的奇怪编码行为

最佳实践以及如何在 Symfony2 中找到从 iOS AFNetworking 获取 POST 数据并在 GET 中返回 JSON?

使用 AFNetworking ios xcode 获取 gmail 邮件列表

在故障块 AFNetworking 3.0 上获取 responseObject

iOS - 在 AFNetworking 异步图像下载线程完成后重新加载 UITableView