NSURLSessionUploadTask(上传任务)

通过POST网络请求发送一条带图片文字的微博
    //构建URL
    NSURL *url = [NSURL URLWithString:@"https://upload.api.weibo.com/2/statuses/upload.json"];
    //构建请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    //设置请求对象
    request.HTTPMethod = @"POST";

    //请求头(有固定的格式要求)
    //格式: multipart/form-data; charset=utf-8;boundary=AaB03x
    //拼接请求头字符串
    NSString *string = [NSString stringWithFormat:@"multipart/form-data; charset=utf-8; boundary=%@", kBoundary];
    //设置请求头
    [request setValue:string forHTTPHeaderField:@"Content-Type"];

    //请求体
    //图片,文本,和登陆用户授权
    UIImage *ali = [UIImage imageNamed:@"ali.jpg"];
    NSString *text = @"发送微博";
    NSString *token = @"2.00hd363CtKpsnBedca9b3f35tBYiPD";
    //创建请求体
    NSData *bodyData = [self bodyDataWithToken:token text:text image:ali];

    //创建会话
    NSURLSession *session = [NSURLSession sharedSession];
    //创建上传任务
    NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:bodyData completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSHTTPURLResponse *httpRes = (NSHTTPURLResponse *)response;
        NSLog(@"状态码:%li", httpRes.statusCode);
        if (error) {
            NSLog(@"上传出错");
        } else {
            NSLog(@"上传成功");
        }
    }];   
    //开始任务
    [uploadTask resume];    
}
发送微博POST请求的请求体有固定的格式
- (NSData *)bodyDataWithToken:(NSString *)token
                    text:(NSString *)text
                   image:(UIImage *)image {

    //包装数据到请求体中
    NSMutableString *mString = [[NSMutableString alloc] init];

    //token
    [mString appendFormat:@"--%@\r\n", kBoundary];
    //拼接带有双引号的字符串 需要添加\在双引号之前
    [mString appendFormat:@"Content-Disposition: form-data; name=\"access_token\"\r\n\r\n"];
    //拼接value1
    [mString appendFormat:@"%@\r\n", token];
    [mString appendFormat:@"--%@\r\n", kBoundary];


    //微博正文
    //key2
    [mString appendFormat:@"Content-Disposition: form-data; name=\"status\"\r\n\r\n"];
    //拼接value2
    [mString appendFormat:@"%@\r\n", text];
    [mString appendFormat:@"--%@\r\n", kBoundary];


    //图片
    [mString appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"file\"\r\n"];
    [mString appendFormat:@"Content-Type: application/octet-stream\r\n\r\n"];

    NSLog(@"%@", mString);
    //将字符串  转化为NSData
    NSMutableData *bodyData = [[mString dataUsingEncoding:NSUTF8StringEncoding] mutableCopy];

    //拼接图片数据
    //将图片转化为数据
    NSData *imageData = UIImageJPEGRepresentation(image, 1);
    [bodyData appendData:imageData];

    //结尾字符串  结束符
    NSString *endString = [NSString stringWithFormat:@"\r\n--%@--\r\n", kBoundary];
    NSData *endData = [endString dataUsingEncoding:NSUTF8StringEncoding];

    [bodyData appendData:endData];

    return [bodyData copy];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值