如何从AFNetworking中的POST请求中读取简单string(无JSON)
我正在使用AFNetworking
通过POST与服务器进行通信,使用包含所需信息的简单string进行响应。 我使用下面的代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager POST: MY_URL parameters: MY_PARAMETERS success:^(AFHTTPRequestOperation *operation, id responseObject) { //do something } failure:^(AFHTTPRequestOperation *operation, NSError *error) { //etc. }];
但是, AFNetworking
似乎希望每个响应都是JSON格式,因为在执行我的请求时出现这个错误:
错误域= NSCocoaErrorDomain代码= 3840“该操作无法完成。(cocoa错误3840.)”(JSON文本没有开始数组或对象和选项,以允许片段没有设置。)UserInfo = 0x1566eb00 {NSDebugDescription = JSON文本没有开始数组或对象和选项,以允许片段没有设置。}
我怎么能告诉AFNetworking
,答案不是JSON对象? 我见过一些涉及AFHTTPClient
东西,但它似乎不再是AFNetworking
一部分。
您可以告诉AFHTTPRequestOperationManager
或AFHTTPSessionManager
如何处理响应,例如,在调用POST
之前,您可以执行以下操作:
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
然后在你的success
块,你可以将NSData
转换为一个string:
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
话虽如此,你可能要考虑转换你的web服务来返回JSON响应,因为parsing这种方式(以及区分有效响应和某些服务器错误)要容易得多。
NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
你可以得到如下的响应描述细节
NSLog(@"JSON: %@", [responseObject description]);