IOS-网络编程(上传任务到微博)

2.jpg

#import "ViewController.h"
#define boundary @"asdfasdfas"
//登录微博自动获取,具体如何获取请看:微博开发平台获取
#define Access_Token @"2.00LvxxAE33dQxBcfde5ce7268QdVfB"
@interface ViewController ()

  @end

  @implementation ViewController

  - (void)viewDidLoad {
[super viewDidLoad];

//1 url
NSURL *url = [NSURL URLWithString:@"https://upload.api.weibo.com/2/statuses/upload.json"];

//2 request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//(1)请求方式
[request setHTTPMethod:@"POST"];

//(2)请求头
//上传任务,必须要添加的字段
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; charset=utf-8;boundary=%@",boundary];

[request setValue:contentType forHTTPHeaderField:@"Content-Type"];

//(3)请求体
NSString *path = [[NSBundle mainBundle]pathForResource:@"2" ofType:@"jpg"];

NSData *bodydata = [self buildBodyDataWithStatus:@"62班都在睡觉" withPicPath:path];

//    [request setHTTPBody:bodydata];

//3 session
NSURLSession *session = [NSURLSession sharedSession];

//4 task
/*
 Request:请求对象
 fromData:请求体
 */
NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromData:bodydata completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {      
    NSLog(@"response = %@",response);     
}];

//5 resume
[task resume];  

}
-(NSData)buildBodyDataWithStatus:(NSString)text withPicPath:(NSString *)path{

//
NSMutableString *bodyStr = [NSMutableString string];

//1 access_token
[bodyStr appendFormat:@"--%@\r\n",boundary];//\n:换行 \n:切换到行首
[bodyStr appendFormat:@"Content-Disposition: form-data; name=\"access_token\""];
[bodyStr appendFormat:@"\r\n\r\n"];
[bodyStr appendFormat:@"%@\r\n",Access_Token];

//2 stutas
[bodyStr appendFormat:@"--%@\r\n",boundary];//\n:换行 \n:切换到行首
[bodyStr appendFormat:@"Content-Disposition: form-data; name=\"status\""];
[bodyStr appendFormat:@"\r\n\r\n"];
[bodyStr appendFormat:@"%@\r\n",text];

//3 pic
/*
 --AaB03x
 Content-disposition: form-data; name="pic"; filename="file"
 Content-Type: application/octet-stream
 */
[bodyStr appendFormat:@"--%@\r\n",boundary];
[bodyStr appendFormat:@"Content-disposition: form-data; name=\"pic\"; filename=\"file\""];
[bodyStr appendFormat:@"\r\n"];
[bodyStr appendFormat:@"Content-Type: application/octet-stream"];
[bodyStr appendFormat:@"\r\n\r\n"];


NSMutableData *bodyData = [NSMutableData data];

//(1)startData
NSData *startData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
[bodyData appendData:startData];

//(2)pic
NSData *picdata  =[NSData dataWithContentsOfFile:path];
[bodyData appendData:picdata];

//(3)--Str--
NSString *endStr = [NSString stringWithFormat:@"\r\n--%@--\r\n",boundary];
NSData *endData = [endStr dataUsingEncoding:NSUTF8StringEncoding];
[bodyData appendData:endData];    
return bodyData; 
}
@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,210评论 0 7
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,221评论 2 7
  • PS:注释的部分为发微博的代码因为和发微博与上传图片代码重复了所以注释了。
    狒狒James_Leo阅读 4,010评论 0 5
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    1d5cb7cff98d阅读 5,732评论 0 0
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    tzhtodd阅读 5,059评论 0 2

友情链接更多精彩内容