读书人

豆瓣客户端(3)发送图文广播

发布时间: 2013-10-08 17:08:58 作者: rapoo

豆瓣客户端(三)发送图文广播

这只是一个简单的Demo,功能是调用豆瓣的接口发送图文广播。功能并不齐全,只是为网络编程练练手而已。

首先强调,这里没有用到第三方类库,也没有使用豆瓣的iOS SDK,都是直接用iOS给出的类和接口写的,只有代码是自己的,才真正有一种踏实的感觉。

当然第三方类库也非常好用,而且我也非常尊敬开发者开源共享的精神。


该广播接口的主要内容如下:

URL

shuo/v2/statuses/

HTTP请求方式

POST’我说‘类型的广播中如果需要附带图片,注意采用multipart/form-data编码方式上传,上传图片大小限制为<3M,仅支持JPEG,GIF,PNG图片,name 是 image

请求参数

必选类型及范围说明sourcetruestringappkeytexttruestring广播文本内容imagefalsebytes我说的图rec_titlefalsestring推荐网址的标题rec_urlfalsestring推荐网址的hrefrec_descfalsestring推荐网址的描述rec_imagefalsestring推荐网址的附图url

调用示例

curl "https://api.douban.com/shuo/v2/statuses/" -H "Authorization: Bearer TOKEN"  -F "text=TestText"  -F "image=@upload.png"
分析:

接口:https://api.douban.com/shuo/v2/statuses/

请求方式:POST

请求参数:source(必须,NSString),text(必须,NSString),image(可选,二进制数据)。

请求头:Authorization : Bearer ACCESS_TOKEN


首先是认证授权,不多说。

接着来到发广播界面:

豆瓣客户端(3)发送图文广播

对应SayViewController,下面看看该ViewController的接口部分:


点击发送后,在我的豆瓣中的我的广播中可以看到结果:

豆瓣客户端(3)发送图文广播


真正麻烦的是要实现图文广播,注意这里强调的是不使用第三方类库或者豆瓣给出的SDK。

先看看文档的说明:

’我说‘类型的广播中如果需要附带图片,注意采用multipart/form-data编码方式上传,上传图片大小限制为<3M,仅支持JPEG,GIF,PNG图片,name 是 image
multipart/form-data编码方式,也就是要把各个字段分开分别编码,然后将合起来的二进制数据设置为请求的BODY再POST到服务器。

好吧,我对HTTP协议,报文内容什么的的确了解不多,看来专业课的理论知识还是非常重要的。

在参考了网上一些文章后才大致明白其编码的工作方式,最后参考一下豆瓣SDK中的代码还是解决了该部分的内容。

先给出两篇挺有价值的参考文章:

IOS Post form(data and pic)I

【原】iOS通过http post上传图片(头像是个帅哥来的,感谢这位帅哥的分享)

在参考了豆瓣的SDK的源码后,我大致假设HTTP请求报文内容如下:


点了发送后,我的广播内容也更新了:

豆瓣客户端(3)发送图文广播

老白出现了,就是WW.jpg对应的图片内容。(看到老白最后倒在实验室含笑而终,Baby Blue音乐一直在唱,既感到欣慰又是心痛啊,永别了,我的老白)


该博客对应的Demo已经上传,欢迎下载交流。由于豆瓣应用的机制:只有添加为该应用的测试用户才可以授权给该应用并登录,所以如果你想运行该应用,可以自己新建一个豆瓣应用,再替换Demo中的DBAPIURL.h中的API_KEY,SECRET_KEY和REDIRECT_URI。或者你留下你豆瓣的uid,让我添加你为该应用的测试用户就可以使用了。



好了,最后小结一下。

主要说说POST数据的方法(不使用第三方类库,尽管它们非常好用)。

如果单纯是POST一些NSString等类型的数据,直接设置参数,再编码为NSData就可以了,例如获取token时:




读书人网 >移动开发

热点推荐