我正在尝试使用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和密码的参数,它会给出正确的响应。
我犯的错误是什么?
答案 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服务的特定部分。
没有原始网址,没有人会告诉你你做错了什么。但就我而言,我可以说你应该检查一下,
SECRET_KEY
或userOrEmail
。failure block
内得到这个,那么最有可能前三点应该可以解决你的问题。正如你所说,这在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)”