2016-10-07 7 views
3

Es gibt andere Fragen mit ähnlichen Titeln, aber keine von ihnen hat mir geholfen. Ich habe eine PUT Anforderung an den Server zu senden, um den Status der Bestellung zu ändern, damit ich diese Methode gemacht habe -(void)appointmentStatusChangedTo:(NSString *)statusID atAppointmentID:(NSString *)appointmentID In dem ich die Einstellung der URL und Parameter wieAFNetworking 3.0 Die Daten konnten nicht gelesen werden, weil es nicht im richtigen Format ist

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

Dann habe ich gemacht URL Anfrage als

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

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

nach, dass ich die Einstellung der Kopfzeile für ein Autorisierungs-Token als

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

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

so endlich ich es als

Aufruf
[[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]; 

Nun ist es erfolgreich die Daten an den Server gesendet werden, sondern als eine Antwort erhalte ich

Error: The data couldn’t be read because it isn’t in the correct format.

Ich bin nicht sicher, was die Antwort wie im Moment aussehen könnte, wie ich bin nicht in Kontakt mit Backend-Typ. Aber so weit ich mich erinnere, war es nur ein einfacher 1. Sagen Sie mir bitte, wie man mit jeder Art von Antwort mit AFNetworking 3.0 oder jeder Änderung in meinem Code umgehen kann.

+0

Was AFResponseSerializer Ihre ist? – Larme

+0

@Larme was ist die Alternative? und ja die Antwort ist nicht JSON Was soll ich da reinlegen. –

+0

Können Sie mir Ihre Antwort zeigen? –

Antwort

2

unten versuchen, Code zu verwenden:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 

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

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

Versuchen folgenden Code 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); 
    }]; 
+0

Wie setzen Sie "Bearer AccessToken" in Ihren Code, wie es das OP tut? – coolcool1994

Verwandte Themen