网编基础(3)(上传文件数据到微博)
来源:互联网 发布:10的阶乘java编程 编辑:程序博客网 时间:2024/05/16 14:13
上传数据到微博, 需要在微博开放平台注册一个开发者账号,可以百度,有很多讲解,或者问一下大神。直接看代码,需要的步骤都在其中,注释很详细:
#import "ViewController.h"//宏定义#define boundary @"Aab03x"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}- (IBAction)uploadTask:(UIButton *)sender { //01 创建URL NSURL *url = [NSURL URLWithString:@"https://upload.api.weibo.com/2/statuses/upload.json"]; //02 创建网络请求,这里使用的是NSMutableURLRequest而不是NSURLRequest,是因为父类NSURLRequest的基本设置选项很少 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; //设置请求方式 [request setHTTPMethod:@"POST"]; //设置超时时间 [request setTimeoutInterval:60]; //设置请求头 NSString *content = [NSString stringWithFormat:@"multipart/form-data; charset=utf-8;boundary=%@", boundary]; [request setValue:content forHTTPHeaderField:@"Content-Type"]; //设置请求体数据 NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"7.jpg" ofType:nil]; NSData *imgData = [NSData dataWithContentsOfFile:imgPath]; //调用方法,拿到要上传的网络数据 NSData *data = [self buildData:imgData];// request.HTTPBody = data;这里不用设置请求体了,因为下面的fromData:data就是请求体! //03 创建网络会话 NSURLSession *session = [NSURLSession sharedSession]; //04 创建网络会话上传任务 NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromData:data completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { NSLog(@"发送失败"); }else { NSLog(@"发送成功"); } }]; //发起网络请求 [task resume];}//上传文件,请求包中数据格式必须如下:/** --AaB03x Content-Disposition: form-data; name="key1" value1 --AaB03x Content-disposition: form-data; name="key2" value2 --AaB03x Content-disposition: form-data; name="key3"; filename="file" Content-Type: application/octet-stream 图片数据... --AaB03x-- *///需要上传的网络数据(内容)- (NSData *)buildData:(NSData *)imgData { //获取令牌 NSString *accessToken = @"2.00RDjyEGC9rz4E4c1d85b38bmm3mFD"; //需要上传的状态值 NSString *statusValues = @"每一个人,都应该被世界倾柔相待。"; //创建可变字符串 NSMutableString *bodyString = [NSMutableString string]; //状态值 [bodyString appendFormat:@"--%@\r\n", boundary]; [bodyString appendFormat:@"Content-Disposition: form-data; name=\"status\"\r\n\r\n"]; [bodyString appendFormat:@"%@\r\n", statusValues]; //令牌 [bodyString appendFormat:@"--%@\r\n", boundary]; [bodyString appendFormat:@"Content-disposition: form-data; name=\"access-token\"\r\n\r\n"]; [bodyString appendFormat:@"%@\r\n", accessToken]; //类型name和文件名filename [bodyString appendFormat:@"--%@\r\n", boundary]; [bodyString appendFormat:@"Content-disposition: form-data; name=\"pic\", fileName=\"file\"\r\n"]; [bodyString appendFormat:@"Content-Type: application/octet-stream\r\n\r\n"]; //图片数据 NSMutableData *allData = [NSMutableData data]; NSData *textData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; [allData appendData:textData]; [allData appendData:imgData]; NSString *endString = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary]; [allData appendData:[endString dataUsingEncoding:NSUTF8StringEncoding]]; //返回所有数据 return allData;}@end
此为学习笔记,欢迎提出不足之处。也欢迎和我一样的小白借鉴参考。
0 0
- 网编基础(3)(上传文件数据到微博)
- 网编基础(1)
- 网编基础(2)
- Tcp: 上传图片(自编源码)
- hdfs 上传文件(写数据)流程
- 网编基础(4)网络下载音乐和视频
- django上传数据(3)
- java web学习基础(五) 文件上传 SmartUpload
- SpringMVC基础及实例(二)文件上传简单实例
- spring mvc基础之文件上传(基于html5)
- JPEG文件编/解码详解(1)
- JPEG文件编/解码详解(2)
- asp:小数据无组件上传(支持多文件)
- Laravel框架学习(Request请求数据、Cookie、文件上传)
- C#上传(修改表单数据),下载文件到服务器
- Laravel框架学习(Request请求数据、Cookie、文件上传)
- 大数据WE阶段(十七)文件上传
- 【Java基础】--上传文件
- **NGINX简单access日志查询分析**
- ACdream 1216 Beautiful People 最长上升子序列变形
- html5中canvas贝塞尔曲线绘制菊花
- test
- 通过mvn dependency:tree 查看依赖树,解决依赖jar冲突问题
- 网编基础(3)(上传文件数据到微博)
- TextView代码中设置颜色大小
- 深入理解android自定义属性(AttributeSet,TypedArray)
- HDU 1003 Max Sum (动态规划)
- Nodejs——搭建电影展台(grunt)配置
- 【Poj】-3069-Saruman's Army(贪心)
- 应用程序打包发布工具
- iOS 复制功能的实现
- Mysql远程登陆方法