2012-06-11 197 views
6

我正在嘗試調用服務器。 GET調用運行良好並返回正確的json,但是當我嘗試執行PUT或POST時,服務器返回錯誤。POST和PUT請求AFNetworking

我設置了服務器來接收下一個信息:

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/ 

我怎麼能說與這兩個方法的服務器?

+3

有什麼錯誤? – Sirens

+1

這和AFNetworking有什麼關係呢?您是否在使用AFN提出這些要求?您是否發佈了關於如何使用AFN的代碼示例? – mattt

回答

10

我會創造一個APIClient類的所有請求,而不是每次我提出請求時創建一個新的客戶。

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

但根據你的問題。我相信代碼看起來像這樣。 (代碼未經測試)

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"); 
}]; 

至於post請求..只是使用postPath而不是putPath,它會正常工作。 :)

希望我已經幫助。

問候,

Steve0hh

1

由於沒有相關的代碼,我假設你使用getPath:parameters:success:failure:或沒有parametersPOST發送REQD這可能是由你的服務器/ API需要。

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

另請參閱AFNetworking Post Request示例代碼與POST與AFnetworking