如何从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一部分。

您可以告诉AFHTTPRequestOperationManagerAFHTTPSessionManager如何处理响应,例如,在调用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]);