2012-06-11 45 views
6

Tôi đang cố thực hiện cuộc gọi đến máy chủ. Lệnh gọi GET hoạt động tốt và trả về json đúng, nhưng khi tôi cố gắng thực hiện một PUT hoặc POST, máy chủ trả về lỗi.Yêu cầu POST và PUT AFNetworking

tôi đặt máy chủ để nhận được các tin nhắn tiếp theo:

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/ 

Làm thế nào tôi có thể gọi đến máy chủ với hai phương pháp này?

+3

lỗi là gì? – Sirens

+1

Điều này có liên quan gì đến AFNetworking? Bạn có đang sử dụng AFN để thực hiện các yêu cầu này không? Bạn có đăng các ví dụ mã về cách bạn đang sử dụng AFN không? – mattt

Trả lời

10

tôi sẽ tạo ra một lớp APIClient cho tất cả các yêu cầu thay vì tạo ra một khách hàng mới mỗi khi tôi thực hiện một yêu cầu.

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

nhưng dựa trên câu hỏi của bạn. Tôi tin rằng mã sẽ trông giống như thế này. (Mã không được kiểm tra)

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

Đối với yêu cầu đăng bài .. chỉ cần sử dụng postPath thay vì putPath và nó sẽ hoạt động tốt. :)

Hy vọng tôi đã giúp.

Kính trọng,

Steve0hh

1

Kể từ khi không có mã liên quan, tôi giả sử bạn sử dụng hoặc không có getPath:parameters:success:failure:parameters gửi với POST reqd mà có thể được yêu cầu bởi máy chủ của bạn/API.

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

Cũng tham khảo AFNetworking Post Request cho mẫu mã với POST với AFnetworking

Các vấn đề liên quan