#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