Objective-C 如何使用 AFNetworking POST 表单数据?

Objective-C How to POST form-data using AFNetworking?

我有一个网络服务,我可以通过 Postman 实用程序成功地对其进行 post 调用。在 Postman 上,设置为

我无法使用代码使用 Afnetworking 进行相同的调用。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"body": @{@"email":@"email@gmail.com",@"name":@"myName"}};
[manager POST:@"http://myURL.com/user" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

我的猜测是我没有正确设置表单数据?

您需要序列化您的 params 字典,然后对其进行字符串编码,因为您的 body 参数中有一个 JSON 对象。 试试这个:

    NSDictionary *params = @{@"email": @"email@gmail.com", @"name": @"myName"};
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:0 error:nil];
    NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    NSDictionary *dict = @{@"body":json};
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager POST:@"http://myURL.com/user" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSString *myString = [[NSString alloc] initWithData:operation.request.HTTPBody encoding:NSUTF8StringEncoding];
        NSLog(@"Error: %@", myString);
    }];