2017-01-11 2 views
0

machen ************** EDITED *******************Kann nicht POST Anfrage mit AFNetworking

Ich bin relativ neu in iOS und ich möchte eine Post-Anforderung mit dem folgenden Code machen:

ich erhalte eine NSLocalizedDescription = Request fehlgeschlagen: nicht akzeptabel Content-Type: text/html, NSErrorFailingURLKey = https://xxxxxx-xxxxxx/xxxx/xxxx}}, com.alamofire.serialization .response.error.response = {URL: https://xxxxxx/xxx/xxxx/xxxxxs}

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
     AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; 

     [requestSerializer setValue:token1 forHTTPHeaderField:@"Authorization"]; 
     [requestSerializer setValue:@"PP" forHTTPHeaderField:@"x-service-code"]; 
     [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
     [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
     [manager setRequestSerializer:requestSerializer]; 


     NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys: 
           token.tokenId, @"payment_method_nonce", 
           details.city, @"city", 
           details.address1, @"address1", 
           details.state, @"state", 
           details.zipcode, @"zip", 
           nil]; 



     [manager POST:url parameters:params 

      success:^(NSURLSessionDataTask *task, id responseObject) 
     { 
      NSLog(@"SUCCEEDED"); 
     } 
      failure:^(NSURLSessionDataTask *task, NSError *error) 
     { 
      loadingOverlay.hidden = YES; 
      NSLog(@"FAILED %@",error); 


     }]; 

Ich habe herausgefunden, was das Problem ist: Ich muss params als rohe JSON senden und es tut das nicht. Wie erreiche ich das?

Ich möchte params im Rohformat dh

{ "payment_method_nonce": "tok_xxxxxxxx"} gehen

+0

'inakzeptabler Inhaltstyp: text/html'. Versuchen Sie, 'text \ html' zum akzeptierten Inhaltstyp hinzuzufügen. – Larme

+1

hat nicht funktioniert + unser Server akzeptiert dieses Format nicht. Ich habe überprüft, dass das Problem nicht Header, sondern der Parameter body ist. es muss als roher JSON gesendet werden. Wie konvertiere ich Params in Raw JSON? – Ackman

+0

Wie kann ich eine Post-Anfrage mit Adresse und Token und anderen Details als Körper mit JSON-Format gesendet werden? – Ackman

Antwort

0

Gelöst es ich NSMutableDictionary verwendet statt:

[paymentDetails setObject:token.tokenId forKey:@"payment_method_nonce"]; 
      [paymentDetails setObject:details.address1 forKey:@"address1"]; 
      [paymentDetails setObject:details.city forKey:@"city"]; 
      [paymentDetails setObject:details.state forKey:@"state"]; 
      [paymentDetails setObject:details.zipcode forKey:@"zip"]; 

und verwendet AFHTTPRequestOperationManager statt AFTHTPSessionManager

+0

Scheint so, als wäre der 'AFHTTPRequestOperationManager' die Lösung; nicht 'NSMutableDictionary'. 'NSMutableDictionary' und' NSDictionary' sollten zu den gleichen 'Parametern' für die Anfrage führen. – keithbhunter