使用AFNetworking 2.0发送POST数据

时间:2014-10-16 08:14:36

标签: ios objective-c afnetworking

我正在尝试使用AFNetworking 2.0使用代码发送POST数据:

NSDictionary *loginParameters = @{@"secretKey": @"SECRET_KEY", @"userOrEmail": username, @"password": password};

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager POST:@"https://api.moj.io/v1/login/APP_ID" parameters:loginParameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"object is %@", responseObject);
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failure message is %@", [error localizedDescription]);
}];

这不断给我回复说Request failed: not found (404)

但是如果我使用Postman REST客户端(在Chrome浏览器上),使用URL https://api.moj.io/v1/login/APP_ID以及secretKey,userOrEmail和密码的参数,它会给出正确的响应。

我犯的错误是什么?

3 个答案:

答案 0 :(得分:0)

此网址不正确?

https://api.moj.io/v1/login/APP_ID

将APP_ID替换为您的app_id(也许您在此处显示示例代码?)

最有可能的是,您正在测试的设备或模拟器没有互联网接入?您是否尝试使用此URL在模拟器和设备上浏览此站点?

我一直使用“Charles”,但您可以使用此HTTP和HTTPS代理应用程序来监控来自iPhone模拟器的所有流量,以便您可以实际查看应用程序是否正在发出此HTTPS请求。我多年来一直在使用Charles,这给我节省了很多时间。 http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

您的代码看起来很好,您也正在对此网址进行“POST”。是一个“GET”。 通过粘贴浏览器地址栏来执行此操作。你实际上正在做一个GET。请检查您的文档以确保您应该进行POST或GET?

答案 1 :(得分:0)

错误是找不到404,所以您身边出现了错误,您正试图访问服务器上找不到的Web服务的特定部分。

没有原始网址,没有人会告诉你你做错了什么。但就我而言,我可以说你应该检查一下,

  1. 网址是否正确
  2. 确认您要访问的API(服务)
  3. 仔细检查您通过的参数,如SECRET_KEYuserOrEmail
  4. 如果你在failure block内得到这个,那么最有可能前三点应该可以解决你的问题。
  5. 正如你所说,这在POSTMAN中工作正常,但在代码中没有,那么你可以要求你的API开发人员返回你传递的所有内容,这样你就可以确保你的信息是否正确。

    PS。几天前,我遇到了同样的问题,其中API在POSTMAN和浏览器中运行良好,甚至iPhone的Safari浏览器也是如此。但不是代码。代码中没有问题,然后我让他们把我传给他的所有东西都归还给我,奇怪的是问题出在API里面,查询参数变得空洞了(是的,这非常奇怪!)但是这就是我解决这个问题的方法。

答案 2 :(得分:-1)

它可能是框架中的一个错误,因为即使示例代码也会因域错误而失败:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

错误:错误域= com.alamofire.error.serialization.response代码= -1011“请求失败:未找到(404)”