6

サーバーを呼び出そうとしています。GET呼び出しは正常に機能し、正しいjsonを返しますが、PUTまたはPOSTを実行しようとすると、サーバーはエラーを返します。

次のメッセージを受信するようにサーバーを設定しました。

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/

これらの2つのメソッドを使用してサーバーを呼び出すにはどうすればよいですか?

4

2 に答える 2

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リクエストについては、putPathの代わりにpostPathを使用するだけで、問題なく動作します。:)

私が助けてくれたことを願っています。

于 2012-07-13T17:06:55.127 に答える
1

関連するコードがないため、サーバー/APIで必要になる可能性のあるPOSTreqdを使用getPath:parameters:success:failure:するか、parameters送信しないと想定します。

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

AFnetworkingを使用したPOSTを使用したサンプルコードについては、 AFNetworkingPostRequestも参照してください。

于 2012-06-21T08:42:09.227 に答える