iOS开发之AFNetworking上传

AFNetworking作为一个网络交互的三方库,它的功能非常丰富,除了我们常用的数据请求外,我们在网络上传的时候也需要注意一下,因为上传的时候如果不是字符串,那么其他的所有东西都需要转化成NSData数据进行上传,下面介绍一下代码。

和取数据差不多的

首先定义一个字典,用来存放参数

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) {

//失败回调


} ];



我们除了要主要上传之外,有些时候还要在请求中的header加入参数,这时候也可以用AFNetworking进行实现。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];


1.首先是创建manager.requestSerializer = [AFJSONRquestSerializer serializer];


2.设置参数

value             key

[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];




设置长度



[manager.requestSerializer setValue:[NSString stringWithFormat:@"%ld", (unsigned long)[jsonStr length]] forHTTPHeaderField:@"Content-Length"];



设置请求编码类型


[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];



本文有因为问题请联系

QQ:563699115

Telephone:18341266547


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值