无法发出 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的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AFNetworking 发出 POST 请求

Flutter Dio 无法发出 POST 请求 [关闭]

Chrome 65 - 无法从本地文件向 Flask 发出 POST 请求

Rails:发出 POST 请求时无法验证 CSRF 令牌的真实性

斜角 | CustomPOST:我无法发出 CORS POST 请求,正文中有 json 数据对象

无法在 JavaScript 中向 Java Web 服务(球衣)发出 CORS POST 请求?