我正在使用AFNetworking
POST通过POST与服务器通信,它使用包含我需要的信息的简单字符串进行响应.我正在使用以下代码:
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格式,因为我在执行请求时遇到此错误:
Error Domain = NSCocoaErrorDomain Code = 3840"操作无法完成.(Cocoa error 3840.)"(JSON文本不是以数组或对象开头,而是选项允许未设置片段.)UserInfo = 0x1566eb00 {NSDebugDescription = JSON text没有从数组或对象和选项开始,以允许未设置片段.}
我如何判断AFNetworking
响应不是JSON对象?我已经看到了涉及的东西AFHTTPClient
,但它似乎AFNetworking
不再是其中的一部分了.
您可以告诉AFHTTPRequestOperationManager
或AFHTTPSessionManager
如何处理响应,例如在呼叫之前POST
,您可以执行以下操作:
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
然后在您的success
块中,您可以将其转换NSData
为字符串:
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
话虽如此,您可能需要考虑转换Web服务以返回JSON响应,因为它更容易解析这种方式(并区分有效响应和某些服务器错误).