[iOS微博项目 - 3.2] - 发送微博

github: https://github.com/hellovoidworld/HVWWeibo

A.使用微博API发送微博

1.需求

学习发送微博API

发送文字微博

发送带有图片的微博

2.思路

直接按照微博API的文档指示使用

这里测试上传带图片微博

3.实现

在“发微博”界面,点击右上角发送就调用API

 1 //  HVWComposeViewController.m
 2 /** 发送微博 */
 3 - (void) sendWeibo {
 4     if (self.composeView.text.length == 0) {
 5         [MBProgressHUD showError:@"你好像忘记了内容..."];
 6         return;
 7     }
 8
 9     [MBProgressHUD showMessage:@"发送微博中..."];
10
11     if (self.imageDisplayView.images.count) { // 发送的时带图片的微博
12         [self sendWeiboWithTextNImage];
13     } else { // 发送的是纯文字微博
14         [self sendWeiboWithText];
15     }
16 }
17
18 /** 发送文字微博 */
19 - (void) sendWeiboWithText {
20     // 创建http操作管理者
21     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
22
23     // 设置参数
24     NSMutableDictionary *param = [NSMutableDictionary dictionary];
25     // 访问令牌
26     HVWAccountInfo *accountInfo = [HVWAccountInfoTool accountInfo];
27     param[@"access_token"] = accountInfo.access_token;
28     // 微博文本
29     param[@"status"] = self.composeView.text;
30
31     // 发送请求
32     [manager POST:@"https://api.weibo.com/2/statuses/update.json" parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
33         [MBProgressHUD hideHUD];
34         [MBProgressHUD showSuccess:@"发送成功!"];
35     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
36         HVWLog(@"发送微博失败, error:%@", error);
37         [MBProgressHUD hideHUD];
38         [MBProgressHUD showError:@"发送失败!error"];
39     }];
40 }
41
42 /** 发送图文微博 */
43 - (void) sendWeiboWithTextNImage {
44     if (self.imageDisplayView.images.count == 0) {
45         [MBProgressHUD hideHUD];
46         [MBProgressHUD showError:@"懵了,找不到图儿!"];
47         return;
48     }
49
50     // 创建http操作管理者
51     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
52
53     // 设置参数
54     NSMutableDictionary *param = [NSMutableDictionary dictionary];
55     // 访问令牌
56     HVWAccountInfo *accountInfo = [HVWAccountInfoTool accountInfo];
57     param[@"access_token"] = accountInfo.access_token;
58     // 微博文本
59     param[@"status"] = self.composeView.text;
60
61     // 发送请求
62     [manager POST:@"https://upload.api.weibo.com/2/statuses/upload.json" parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
63
64         // 发送的图片数据,其实现在开放的API只允许上传一张图片
65         UIImage *image  = [self.imageDisplayView.images firstObject];
66         if (image) {
67             NSData *imageData = UIImagePNGRepresentation(image);
68             [formData appendPartWithFileData:imageData name:@"pic" fileName:@"statusPic" mimeType:@"image/png"];
69         }
70     } success:^(AFHTTPRequestOperation *operation, id responseObject) {
71         [MBProgressHUD hideHUD];
72         [MBProgressHUD showSuccess:@"发送成功!"];
73     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
74         HVWLog(@"发送微博失败, error:%@", error);
75         [MBProgressHUD hideHUD];
76         [MBProgressHUD showError:@"发送失败!"];
77     }];
78 }

发送成功:

#mark:

发送微博失败的原因有:

1.没有文本内容

2.使用发送纯文本API,却上传图片

3.使用发送图文API,却没有上传图片

注意:新浪开放的API一次只能上传一张图片,选择多张的时候会使用最后一张

时间: 2024-12-24 10:48:11

[iOS微博项目 - 3.2] - 发送微博的相关文章

猫猫学iOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:封装好的工具条 NYComposeToolbar.h 带代理方法 #import <UIKit/UIKit.h> typedef enum { NYComposeToolbarButtonTypeCamera, // 拍照 NYComposeToolbarButtonTypePicture, // 相册 NYComposeToolbarButto

猫猫学iOS 之微博项目实战(13)发送微博调用相机里面的图片以及调用相机

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:代码 相机部分就简单多了,几行代码调用而已,但是如果你要是想实现更多丰富的功能,需要自己写.利用AssetsLibrary.framework,利用这个框架可以获得手机上的所有相册图片,写一个图片选择控制器. - (void)openCamera { [self openImagePickerController:UIImagePickerCont

iOS开发项目篇—36封装微博业务

iOS开发项目篇—36封装微博业务 一.简单说明 1.请求参数面向模型 2.请求结果面向模型 3.对控制器来说应该屏蔽业务细节.不让控制器关心(知道)业务细节,它只需要知道自己在做某个业务 @通过一个专门的业务处理类:处理微博业务细节 说明: 业务:加载新的微博首页数据 实现:给新浪服务器发送一个GET请求 业务:加载更多的首页微博数据 实现1:给新浪服务器发送一个GET请求 实现2:去沙盒中加载以前离线缓存的微博数据  二.实现 1.新建一个微博业务处理类,继承自NSObject 微博业务处理

iOS开发项目篇—33发微博

iOS开发项目篇—33发微博 一.简单说明 1.发送按钮 当textView的文字发生改变(有内容)的时候,设置导航栏右侧的按钮为可点击的. 说明:监听内容的改变,既可以使用通知来实现,也可以使用代理来实现(下面使用的是代理的方式) 代码说明: 1 #pragma mark-设置代理方法 2 /** 3 *当textView的内容改变的时候,通知导航栏“发送”按钮为可用 4 */ 5 -(void)textViewDidChange:(UITextView *)textView 6 { 7 se

[iOS微博项目 - 2.6] - 获取微博数据

github: https://github.com/hellovoidworld/HVWWeibo   A.新浪获取微博API 1.读取微博API 2.“statuses/home_timeline”接口 B.在app中获取微博数据 1.在“首页”控制器发送请求,获取json数据 1 /** 加载微博数据 */ 2 - (void) loadWeiboData { 3 // 创建AFNetworking的http操作中管理器 4 AFHTTPRequestOperationManager *m

[iOS微博项目 - 4.0] - 自定义微博cell

github: https://github.com/hellovoidworld/HVWWeibo A.自定义微博cell基本结构 1.需求 创建自定义cell的雏形 cell包含:内容.工具条 内容包含:原创内容.转发内容 2.思路 使用分层控件,逐层实现 分离model和view model:数据模型.frame模型 view:就是控件本身 frame模型:包含数据模型和子控件frame 根据数据模型来决定子控件是否显示(例如转发内容) cell的view设计雏形: 控件的成员属性层次:

[iOS微博项目 - 3.1] - 发微博界面

github: https://github.com/hellovoidworld/HVWWeibo   A.发微博界面:自定义UITextView 1.需求 用UITextView做一个编写微博的输入框 没有输入任何文本的时候显示占位文本 统一占位文本和正文的字体 2.思路 系统自带的输入控件有UITextField和UITextView两种 UITextField:自带占位文本属性,不能换行 UITextView:没有占位文本属性,能换行 这里我们选择UITextView进行改造 根据是否输

iOS开发项目篇—39获取用户未读的微博信息(信息提醒)

iOS开发项目篇—39获取用户未读的微博信息(信息提醒) 一.简单说明 1.实现效果       2.实现 (1)新建一个类,封装请求 查看新浪官方要求的请求参数 该类中的代码设计 YYUnreadCountParam.h文件 1 // YYUnreadCountParam.h 2 //封装请求参数的类 3 4 #import "YYBaseParam.h" 5 6 @interface YYUnreadCountParam : YYBaseParam 7 /**uid true in

iOS开发项目篇—31提示最新微博数

iOS开发项目篇—31提示最新微博数 一.简单说明 1.导入图片素材 2.关于提示条的位置分析 原本的显示情况: 说明:滚动tableView对它没有任何的影响,可以知道提示条的父控件不应该是tableView 加入提示条之后的情况:     解决方案: 说明: (1)导航条是导航控制器的view子控件,可以把提示条添加到导航控制器的view上,当刷新的时候,有view调整提示条的位置. (2)关于改变y的值以及transform的选择,如果是动画执行完成之后需要回复到以前的位置,那么建议使用t