AFNetworking 将参数作为表单数据发送

Posted

技术标签:

【中文标题】AFNetworking 将参数作为表单数据发送【英文标题】:AFNetworking send parameters as form data 【发布时间】:2016-02-15 08:22:46 【问题描述】:

我一直在尝试通过将内容类型设置为 application/x-www-form-urlencoded 到 HTTPHeaderField 来将参数作为表单数据发送,但请求仅适用于上述内容类型,我的代码适用于 application/json 类型. 所以,我无法纠正实际问题,因此请求没有通过。

下面是我的代码::

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setTimeoutInterval:60];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:requestAuthorization forHTTPHeaderField:@"Authorization"];
[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:[[[UIDevice currentDevice] identifierForVendor] UUIDString] forHTTPHeaderField:@"device_id"];
[manager.requestSerializer setValue:[[UIDevice currentDevice] systemVersion] forHTTPHeaderField:@"device_os"];
[manager.requestSerializer setValue:[[UIDevice currentDevice] systemName] forHTTPHeaderField:@"device_name"];

[manager POST:url parameters:parameters success:success failure:failure];

任何帮助将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

它在 Github 上的 AFNetworking 页面上给出。 AFNetworking Library

您可以通过简单地使用以下示例来做到这一点:-

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters = @@"key": @"xxx";

[manager POST:@"http://test.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) 
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error) 
NSLog(@"Error: %@", error);
];

【讨论】:

要上传大文件到服务器吗? 不,我只想将参数作为表单数据发送,这就是为什么我设置 [manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type "]; 请不要在您的代码中设置此项并尝试:- [manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];跨度> 仍然无法通过,API 可以通过 Advance Rest 客户端访问,但不能通过 AFNetworking 访问,即无法将参数作为表单数据发布。 完美答案

以上是关于AFNetworking 将参数作为表单数据发送的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 2 将十六进制字符串作为数据发送到服务器

Afnetworking 2.0 发布方法错误

AFNetworking 在 GET 请求的 JSON 参数中发送数组

AFNetworking 将 NSMutableDictionary 作为 POST 发送

如何使用 AFNetworking 在 http 中将 json 数据作为参数传递

使用 AFNetworking 发送图像和其他参数