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属性是一个数组。因此用同一个参数不会把服务器的值覆盖。

时间: 2024-08-05 07:18:06

iOS开发-AFNetworking 怎样上传数据? 怎样上传模拟表单的相关文章

iOS开发-AFNetworking参数和多文件同时上传【多文件上传】

1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数.多张图片和音频: 2. 功能实现 在实现此功能之前,需要引入第三方AFNetworking,这是一个非常强大的网络开发工具,这里我就不多说了,下面是我用此工具,封装的一个同时上传参数和多个文件的方法: 2.1 方法名 /** 多文件上传,支持同时上传参数.多个图片.多个音频,[需要将每一个文件转化为

iOS开发学习之#提醒处理#(2)响应动作表单

在动作表单中我们用很多按钮实现,在这里我们用到了UIActionsheetDelegate协议中的actionSheet:clickedButtonAtIndex:方法实现,其语法形式如下: - (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; 其中,(UIActionSheet*)actionSheet 用来指定动作表单中包含的按钮,(NSInteger)butt

iOS开发:AFNetworking和ASIHTTPRequest的比较

标签: it 网络请求 asihttprequest afnetworking   ASI和AFN以及底层框架的关系  对比 ASI AFN 更新状态 2012年10月份,已经停止更新 持续更新中,目前已更新至2.0版 介绍 ASI的直接操作对象ASIHTTPRequest,是一个实现了了NSCopying协议的NSOperation子类. 在initialize和initWithURL:方法中初始化相关属性并配置一系列请求相关参数默认值.此外,ASIHTTPRequest还提供了一系列的实例方

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

Android与iOS开发对比系列】之 数据存储

Android与iOS开发对比系列]之 数据存储 写在前面的话 相比Android和iOS,我觉得Android的数据存储更开放一些.Android天生就可以使用多Java I/O:并且天生开放的特性,开发者可以直接在SD卡中读写文件,自由度比较高.缺点吗,也是因为太开放,所以Android的相册和文件夹都惨不忍睹. Android本身自带Java的反射和注解,很早就有了ORM数据库.这里解释一下,ORM就是 Object Relation Mapping, 对象关系映射. 通过建立对象来生成数

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送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

android post方式上传文件(模拟表单格式数据提交)

表单提交内容为: POST /upload.php?zp_id=ab46ca6d703e3a1580c1c9b8b3a8fb39 HTTP/1.1Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/v

Android实现模拟表单上传

很久以前,写过一篇关于下载的文章:基于HTTP协议的下载功能实现,今天对于Android上的文件上传,也简单的提两笔.在Android上,一般使用Http 模拟表单或者FTP来进行文件上传,使用FTP协议,可以直接使用Appache的FTPClient,使用方法很简单,不再赘述.这里主要说明一下Http模拟表单上传的实现. 模拟表单上传,其实也很简单,主要需要在Http post 的数据体中构建表单信息(multipart/form),表单数据格式的规范,可以参考REC标准.下面是一个格式示例:

HTML5 FormData 模拟表单控件 支持异步上传二进制文件 移动端

FormData是XMLHttpRequest Level 2添加的一个新的接口,利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件. 主流手机系统基本都是webkit内核,可以使用. var form= new FormData (optional HTMLFormElement

利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)

在很多企业级应用中,我们都没法直接通过开发语言sdk包封装的http工具来模拟http复合表单(multipart/form-data),特别是在跨语言跨平台的编程过程中,其实实现方案并不复杂,只要你了解了http协议中复合表单的报文结构就很简单了: httpheader ------时间戳------ 表单参数1 ------时间戳------ 表单参数2 ------时间戳------ 文件1的描述+二进制信息 ------时间戳------ 文件2的描述+二进制信息 下面我们进一步以一段c