2012-06-11 26 views
6

Próbuję wykonać połączenie z serwerem. Wywołanie GET działa dobrze i zwraca poprawny json, ale gdy próbuję wykonać PUT lub POST, serwer zwraca błąd.Żądanie POST i PUT AFNetworking

ustawić serwer, aby otrzymać kolejne komunikaty:

method POST 
curl -X POST -d "number=NUMBER&name=NAME&lat=32.5713&lon=60.3926" http://server.com/users/ 

method PUT 
curl -X PUT -d "number=USER&name=NAME6&lat=-34.5552&lon=32.3333" http://server.com/users/ 

Jak mogę połączyć się z serwerem z tych dwóch metod?

+3

Co to jest błąd? – Sirens

+1

Co to właściwie ma wspólnego z AFNetworking? Czy używasz AFN, aby wysyłać te żądania? CZY umieścisz w kodzie przykłady korzystania z AFN? – mattt

Odpowiedz

10

Chciałbym utworzyć klasę APIClient dla wszystkich żądań zamiast tworzenia nowego klienta za każdym razem i złożyć zamówienie.

Patrz: https://github.com/AFNetworking/AFNetworking/tree/master/Example/Classes AFTwitterAPIClient.h & AFTwitterAPIClient.m

ale na podstawie Twojego pytania. Wierzę, że kod będzie wyglądał mniej więcej tak. (Kod nie był testowany)

NSURL *url = [NSURL URLWithString:@"http://server.com"]; 
AFHTTPClient *client = [[AFHTTPClient alloc]initWithBaseURL:url]; 

//depending on what kind of response you expect.. change it if you expect XML 
[client registerHTTPOperationClass:[AFJSONRequestOperation class]]; 

NSDictionary *params = [[NSDictionary alloc]initWithObjectsAndKeys: 
         @"NUMBER",@"number", 
         @"NAME",@"name", 
         @"32.5713",@"lat", 
         @"60.3926",@"lon", 
         nil]; 
[client putPath:@"users" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"success"); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"failure"); 
}]; 

Co do prośby o wpis .. po prostu użyj postPath zamiast putPath i będzie działać poprawnie. :)

Mam nadzieję, że pomogłem.

Pozdrawiam,

Steve0hh

1

Ponieważ nie ma przyporządkowany kod, zakładam użyć getPath:parameters:success:failure: lub nie parameters wysłana z POST reqd które mogą być wymagane przez serwer /API.

postPath:parameters:success:failure: 
putPath:parameters:success:failure: 

Patrz także AFNetworking Post Request dla przykładowego kodu z postem z AFnetworking