通过POST网络请求发送一条带图片文字的微博
NSURL *url = [NSURL URLWithString:@"https://upload.api.weibo.com/2/statuses/upload.json"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
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];
[mString appendFormat:@"--%@\r\n", kBoundary];
[mString appendFormat:@"Content-Disposition: form-data; name=\"access_token\"\r\n\r\n"];
[mString appendFormat:@"%@\r\n", token];
[mString appendFormat:@"--%@\r\n", kBoundary];
[mString appendFormat:@"Content-Disposition: form-data; name=\"status\"\r\n\r\n"];
[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);
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];
}