iOS开发-AFNetworking 怎样上传数据? 怎样上传模拟表单

和取数据差不多的
首先定义一个字典,用来存放参数

NSDictionary* params = [NSDictionary dictionary];

params[@"属性"] = 值;


上传字符串数据:

  //创建请求管理类
        AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];


        //发送请求
        [mgr POST:url parameters:params
          success:^(AFHTTPRequestOperation *operation, id responseObject) {

                //成功回调
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

                //失败回调
      }];**

上传文件数据(事先将文件转化为二进制data):

//创建请求管理类
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];


//发送请求
[mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> totalformData) {


        [totalformData appendPartWithFileData:formData.data name:formData.name fileName:formData.fileName mimeType:formData.mimeType];


} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    //成功回调

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//失败回调

} ];

不用第三方,自己写

一、发送JSON数据给服务器

发送JSON数据给服务器的步骤:

(1)一定要使用POST请求

(2)设置请求头

(3)设置JSON数据为请求体

代码示例:

复制代码
 1 #import "YYViewController.h"
 2 
 3 @interface YYViewController ()
 4 
 5 @end
 6 
 7 @implementation YYViewController
 8 
 9 - (void)viewDidLoad
10 {
11     [super viewDidLoad];
12 }
13 
14 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
15 {
16     // 1.创建请求
17     NSURL *url = [NSURL URLWithString:@"http://192.168.1.200:8080/MJServer/order"];
18     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
19     request.HTTPMethod = @"POST";
20     
21     // 2.设置请求头
22     [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
23     
24     // 3.设置请求体
25     NSDictionary *json = @{
26                            @"order_id" : @"123",
27                            @"user_id" : @"789",
28                            @"shop" : @"Toll"
29                            };
30     
31 //    NSData --> NSDictionary
32     // NSDictionary --> NSData
33     NSData *data = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil];
34     request.HTTPBody = data;
35     
36     // 4.发送请求
37     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
38         NSLog(@"%d", data.length);
39     }];
40 }
41 
42 @end
复制代码

二、多值参数

多值参数:一个参数对应多个值。

如下面的请求参数:

http://192.168.1.103:8080/MJServer/weather?place=北京&place=河南&place=湖南

服务器的place属性是一个数组。因此用同一个参数不会把服务器的值覆盖。

原文地址:https://www.cnblogs.com/dingjianjaja/p/5015062.html