POST和PUT请求使用AFNetworking

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/

我该如何使用这两种方法向服务器发起调用?

1
这与AFNetworking有什么关系?你是在使用AFN来发起这些请求吗?你能发布一些你如何使用AFN的代码示例吗? - mattt
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请求,只需使用postPath而不是putPath即可正常工作。 :)

希望我已经帮到你了。


1

由于没有相关的代码,我假设您使用了 getPath:parameters:success:failure: 或者没有使用 parameters 发送 POST 请求,这可能是您的 服务器/API 所必需的。

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

另请参考AFNetworking Post Request,了解使用AFnetworking进行POST请求的示例代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接