AFNetworking 3.0无法读取数据,因为格式不正确

时间:2016-10-07 13:27:52

标签: ios objective-c afnetworking-3

还有其他问题有类似的标题,但没有一个帮助我。我已向服务器发送PUT请求以更改约会状态,因此我已使用此方法-(void)appointmentStatusChangedTo:(NSString *)statusID atAppointmentID:(NSString *)appointmentID我在其中设置了网址和参数如

NSString *string = [NSString stringWithFormat:@"%@/API/Appointments/3",BaseURLString];
    NSDictionary *para = @{
                           @"AppointmentStatusId":statusID,
                           @"ID":appointmentID
                           };

然后,我已将网址请求设为

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    NSMutableURLRequest *req = [[AFJSONRequestSerializer serializer] requestWithMethod:@"PUT" URLString:string parameters:para error:nil];

之后,我将授权令牌的标头设置为

 NSString *token = [NSString stringWithFormat:@"Bearer %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userToken"]];

    [req setValue:token forHTTPHeaderField:@"Authorization"];

所以最后我把它称为

[[manager dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error){
        if (!error) {
            if (response) {
                NSLog(@"Respose Object: %@",responseObject);
                [self.patientsAppointmentsTableView reloadData];
            }
        }
        else {
    // NSLog(@"Error: %@, %@, %@", error, response, responseObject);
    NSLog(@"Error: %@", error.localizedDescription);
}
        }] resume];

现在它已成功将数据发送到服务器,但作为回复我正在

  

错误:无法读取数据,因为它不正确   格式。

我不确定此刻的回复可能是什么样的,因为我没有与后端人接触。但据我记得,它只是一个简单的1.请告诉我如何使用AFNetworking 3.0处理任何类型的响应或我的代码中的任何更改。

2 个答案:

答案 0 :(得分:2)

尝试使用以下代码:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setStringEncoding:NSUTF8StringEncoding];

manager.requestSerializer=serializer;
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

答案 1 :(得分:0)

使用Afnetworking 3.0

尝试使用以下代码
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager GET:url parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
        NSLog(@"%@",responseObject);
        self.responseHandlers(YES,responseObject);
    } failure:^(NSURLSessionTask *operation, NSError *error) {
        self.responseHandlers(NO,nil);
    }];