无法发出 POST 请求 - AFNetworking
Posted
技术标签:
【中文标题】无法发出 POST 请求 - AFNetworking【英文标题】:Can't make POST request - AFNetworking 【发布时间】:2015-11-15 12:23:44 【问题描述】:我对 Xcode 很陌生,我正在尝试发出 POST 请求。我在 Google 上搜索并找到了这个 AFNetworking 库。我已经阅读了一些文档,但它们都说了不同的话。所以现在我在 POST 请求中使用他们自己的示例,我的代码如下所示:
- (void)viewDidLoad
[super viewDidLoad];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @@"fName": @"firstname", @"lName": @"lastname";
[manager POST:@"http://00000.1111.ovh/api/Account/register" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
然后我得到这个错误:
错误:错误域=com.alamofire.error.serialization.response Code=-1011 “请求失败:错误请求 (400)” UserInfo=com.alamofire.serialization.response.error.response= 网址:http://00000.1111.ovh/api/Account/register 状态码:400,标题 “内容长度”= 159; “内容类型”=“应用程序/json;字符集=utf-8”; 日期 =“2015 年 11 月 15 日星期日 12:11:57 GMT”; 服务器 = "微软-IIS/8.5"; "X-Powered-By" = "ASP.NET"; , NSErrorFailingURLKey=http://00000.1111.ovh/api/Account/register, com.alamofire.serialization.response.error.data=, NSLocalizedDescription=请求失败:错误 请求 (400)
希望有人可以帮助我!
【问题讨论】:
帮自己一个忙,不要使用这个框架。改用 NSURLSession。 克劳斯,我会犹豫建议不要使用这个框架。对于新用户来说,正确编码请求是非常复杂的(例如,我在网上看到的 99% 的示例都无法正确地对请求进行百分比转义)。当然,如果您不喜欢AFHTTPRequestOperationManager
基于 NSURLConnection
(现已弃用)这一事实,请使用非常相似的 AFHTTPSessionManager
(基于 NSURLSession
)。
@Claus:虽然 AFNetworking 在某些(特别是简单的)情况下可能是过度杀伤力,但您在这里给出了“我不明白您的问题,但我愿意回答它”的建议......
【参考方案1】:
如果您将服务器的响应转换为您可以解析/检查的内容,您可以更好地诊断这些问题:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @@"fName": @"firstname", @"lName": @"lastname";
[manager POST:@"http://00000.1111.ovh/api/Account/register" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON = %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error = %@", error);
if (operation.responseObject)
NSLog(@"responseObject = %@", operation.responseObject);
else
NSLog(@"responseString = %@", operation.responseString);
];
如果你这样做了,你会看到它的回应是:
responseObject =
message = "The request is invalid.";
modelState =
"login.password" = (
"The Password field is required."
);
"login.username" = (
"The User name field is required."
);
;
显然,该请求缺少必要的身份验证详细信息。
【讨论】:
谢谢!这很有帮助!【参考方案2】:您的请求已正确发送,但服务器以 HTTP 代码 400 进行响应。请查看服务器的 API 文档以了解请求的外观。
【讨论】:
以上是关于无法发出 POST 请求 - AFNetworking的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 65 - 无法从本地文件向 Flask 发出 POST 请求
Rails:发出 POST 请求时无法验证 CSRF 令牌的真实性