Statuses/upload
(→请求参数) |
|||
第1行: | 第1行: | ||
− | + | {{api_desc2| | |
− | + | uri=statuses/upload| | |
+ | desc=发表图片微博消息。请求必须用POST方式提交。目前上传图片大小限制为<5M。| | ||
+ | format=XML/JSON| | ||
+ | httpMethod=POST| | ||
+ | needAuth=true| | ||
+ | rateLimit=true| | ||
+ | params={{api_args|status|true|string|要发布的微博消息文本内容}} | ||
+ | {{api_args|pic|true|binary|要上传的图片。仅支持JPEG,GIF,PNG图片,为空返回400错误。目前上传图片大小限制为<5M。 }} | ||
+ | {{api_args|lat|false|float|纬度。有效范围:-90.0到+90.0,+表示北纬。}} | ||
+ | {{api_args|long|false|float|经度。有效范围:-180.0到+180.0,+表示东经。}} | ||
+ | {{api_args_colspan|1=<font style="color:#ee6666">注意:lat和long参数需配合使用,用于标记发表微博消息时所在的地理位置,只有用户设置中geo_enabled=true时候地理位置信息才有效。</font>}}| | ||
+ | getParam=| | ||
+ | postParam=| | ||
+ | result= | ||
+ | ===XML示例=== | ||
+ | <pre> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <status> | ||
+ | <id>8374590857</id> | ||
+ | <text>博客已老 围脖当道 http://sinaurl.cn/hMxBc </text> | ||
+ | <source> | ||
+ | <a href="http://t.sina.com.cn">Web</a> | ||
+ | </source> | ||
+ | <favorited>false</favorited> | ||
+ | <truncated>false</truncated> | ||
+ | <created_at>Tue Nov 17 20:11:24 +0800 2009</created_at> | ||
+ | <user> | ||
+ | <id>10503</id> | ||
+ | <screen_name>timyang</screen_name> | ||
+ | <name>Tim Yang</name> | ||
+ | <location>广州</location> | ||
+ | <description>blog: timyang.net</description> | ||
+ | <url>http://timyang.net</url> | ||
+ | <profile_image_url>http://tt8.sinaimg.cn/10503/50/1256306049</profile_image_url> | ||
+ | <followers_count>0</followers_count> | ||
+ | <friends_count>0</friends_count> | ||
+ | <statuses_count>0</statuses_count> | ||
+ | <favourites_count>0</favourites_count> | ||
+ | </user> | ||
+ | </status> | ||
+ | </pre> | ||
+ | ===JSON示例=== | ||
+ | <pre> | ||
+ | {"created_at":"Thu Jan 07 10:51:19 +0800 2010", | ||
+ | "id":142296, | ||
+ | "text":"http://sinaurl.cn/hi4sD", | ||
+ | "source":"<a id=\"0\" href=\"http://t.sina.com.cn/\" rel=\"nofollow\">Web</a>", | ||
+ | "favorited":false, | ||
+ | "truncated":false, | ||
+ | "in_reply_to_status_id":"", | ||
+ | "in_reply_to_user_id":"", | ||
+ | "in_reply_to_screen_name":"", | ||
+ | "thumbnail_pic":"http://static12.photo.sina.com.cn/thumbnail/5219ba9d072da9d51f7bb", | ||
+ | "bmiddle_pic":"http://static12.photo.sina.com.cn/bmiddle/5219ba9d072da9d51f7bb", | ||
+ | "original_pic":"http://static12.photo.sina.com.cn/orignal/5219ba9d072da9d51f7bb", | ||
+ | "geo":null, | ||
+ | "user": | ||
+ | {"id":11075, | ||
+ | "screen_name":"name_11075", | ||
+ | "name":"name_11075", | ||
+ | "province":"0", | ||
+ | "city":"0", | ||
+ | "location":"", | ||
+ | "description":"", | ||
+ | "url":"", | ||
+ | "profile_image_url":"http://tp4.sinaimg.cn/11075/50/0", | ||
+ | "domain":"11075", | ||
+ | "followers_count":28, | ||
+ | "friends_count":50, | ||
+ | "statuses_count":0, | ||
+ | "favourites_count":29, | ||
+ | "created_at":"Thu Jan 01 08:00:00 +0800 1970", | ||
+ | "following":false, | ||
+ | "geo_enabled":false, | ||
+ | "verified":true} | ||
+ | } | ||
+ | </pre>| | ||
+ | useAge= | ||
+ | * 采用multipart/form-data编码方式提交,可以参考: [http://www.ietf.org/rfc/rfc1867.txt Form-based File Upload in HTML] | ||
+ | * 如果使用的Oauth认证,图片参数pic不参与签名。| | ||
+ | otherInfo= | ||
+ | ===Java示例=== | ||
+ | 请从 [[SDK | 微博SDK开发包下载]] 下载Java SDK | ||
+ | 参看 examples/OauthUpload.java, 运行 java OauthUpload accesstoken accesstoken_secret filepath | ||
+ | 代码示意如下 | ||
+ | <pre> | ||
+ | public static void main(String[] args) { | ||
+ | try { | ||
+ | if (args.length < 3) { | ||
+ | System.out.println( | ||
+ | "Usage: java weibo4j.examples.OAuthUploadByFile token tokenSecret filePath"); | ||
+ | System.exit( -1); | ||
+ | } | ||
+ | |||
+ | System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); | ||
+ | System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); | ||
− | + | Weibo weibo = new Weibo(); | |
+ | |||
+ | /* | ||
+ | * 此处需要填写AccessToken的key和Secret | ||
+ | */ | ||
+ | weibo.setToken(args[0], args[1]); | ||
+ | try { | ||
+ | File file=new File(args[2]); | ||
+ | String msg = URLEncoder.encode("中文内容", "UTF-8"); | ||
+ | Status status = weibo.uploadStatus(msg, file); | ||
− | + | System.out.println("Successfully upload the status to [" | |
− | + | + status.getText() + "]."); | |
− | + | ||
− | + | } catch (Exception e1) { | |
− | + | e1.printStackTrace(); | |
− | + | } | |
− | + | } catch (Exception ioe) { | |
− | + | System.out.println("Failed to read the system input."); | |
− | + | } | |
− | + | } | |
− | + | </pre> | |
− | + | ===PHP示例=== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
请从 [[SDK | 微博SDK开发包下载]] 处下载PHP SDK(支持OAuth验证之版本)<br> | 请从 [[SDK | 微博SDK开发包下载]] 处下载PHP SDK(支持OAuth验证之版本)<br> | ||
代码示例如下: | 代码示例如下: | ||
第133行: | 第162行: | ||
echo 'ok.'; | echo 'ok.'; | ||
?> | ?> | ||
− | + | ===其他语言=== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
可参考以下测试方式,将以下代码存成HTML,在微博登录的情况下用浏览器打开此页面可以上传图片,通过比较浏览器的调用(使用HttpWatch, FireBug等工具监测HTTP传送数据)参数来调整你的程序。注意将下面代码中appkey改成对应真实值。 | 可参考以下测试方式,将以下代码存成HTML,在微博登录的情况下用浏览器打开此页面可以上传图片,通过比较浏览器的调用(使用HttpWatch, FireBug等工具监测HTTP传送数据)参数来调整你的程序。注意将下面代码中appkey改成对应真实值。 | ||
第184行: | 第174行: | ||
<input type="hidden" name="source" value="改成你的appkey" /> | <input type="hidden" name="source" value="改成你的appkey" /> | ||
</form></body></html> | </form></body></html> | ||
+ | }} |
2010年12月2日 (四) 16:34的版本
目录 |
statuses/upload
发表图片微博消息。请求必须用POST方式提交。目前上传图片大小限制为<5M。
URL
http://api.t.sina.com.cn/statuses/upload.(json%7Cxml)
支持格式
XML/JSON
HTTP请求方式
POST
是否需要登录
true
关于授权机制,参见授权机制声明
请求数限制
true
关于请求数限制,参见接口访问权限说明
请求参数
必选 | 类型及范围 | 说明 | |
---|---|---|---|
source | true | string | 申请应用时分配的AppKey,调用接口时候代表应用的唯一身份。(采用OAuth授权方式不需要此参数) |
status | true | string | 要发布的微博消息文本内容 |
pic | true | binary | 要上传的图片。仅支持JPEG,GIF,PNG图片,为空返回400错误。目前上传图片大小限制为<5M。 |
lat | false | float | 纬度。有效范围:-90.0到+90.0,+表示北纬。 |
long | false | float | 经度。有效范围:-180.0到+180.0,+表示东经。 |
注意:lat和long参数需配合使用,用于标记发表微博消息时所在的地理位置,只有用户设置中geo_enabled=true时候地理位置信息才有效。 |
注意事项
- 采用multipart/form-data编码方式提交,可以参考: Form-based File Upload in HTML
- 如果使用的Oauth认证,图片参数pic不参与签名。
返回结果
XML示例
<?xml version="1.0" encoding="UTF-8"?> <status> <id>8374590857</id> <text>博客已老 围脖当道 http://sinaurl.cn/hMxBc </text> <source> <a href="http://t.sina.com.cn">Web</a> </source> <favorited>false</favorited> <truncated>false</truncated> <created_at>Tue Nov 17 20:11:24 +0800 2009</created_at> <user> <id>10503</id> <screen_name>timyang</screen_name> <name>Tim Yang</name> <location>广州</location> <description>blog: timyang.net</description> <url>http://timyang.net</url> <profile_image_url>http://tt8.sinaimg.cn/10503/50/1256306049</profile_image_url> <followers_count>0</followers_count> <friends_count>0</friends_count> <statuses_count>0</statuses_count> <favourites_count>0</favourites_count> </user> </status>
JSON示例
{"created_at":"Thu Jan 07 10:51:19 +0800 2010", "id":142296, "text":"http://sinaurl.cn/hi4sD", "source":"<a id=\"0\" href=\"http://t.sina.com.cn/\" rel=\"nofollow\">Web</a>", "favorited":false, "truncated":false, "in_reply_to_status_id":"", "in_reply_to_user_id":"", "in_reply_to_screen_name":"", "thumbnail_pic":"http://static12.photo.sina.com.cn/thumbnail/5219ba9d072da9d51f7bb", "bmiddle_pic":"http://static12.photo.sina.com.cn/bmiddle/5219ba9d072da9d51f7bb", "original_pic":"http://static12.photo.sina.com.cn/orignal/5219ba9d072da9d51f7bb", "geo":null, "user": {"id":11075, "screen_name":"name_11075", "name":"name_11075", "province":"0", "city":"0", "location":"", "description":"", "url":"", "profile_image_url":"http://tp4.sinaimg.cn/11075/50/0", "domain":"11075", "followers_count":28, "friends_count":50, "statuses_count":0, "favourites_count":29, "created_at":"Thu Jan 01 08:00:00 +0800 1970", "following":false, "geo_enabled":false, "verified":true} }
其他
Java示例
请从 微博SDK开发包下载 下载Java SDK 参看 examples/OauthUpload.java, 运行 java OauthUpload accesstoken accesstoken_secret filepath 代码示意如下
public static void main(String[] args) { try { if (args.length < 3) { System.out.println( "Usage: java weibo4j.examples.OAuthUploadByFile token tokenSecret filePath"); System.exit( -1); } System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); Weibo weibo = new Weibo(); /* * 此处需要填写AccessToken的key和Secret */ weibo.setToken(args[0], args[1]); try { File file=new File(args[2]); String msg = URLEncoder.encode("中文内容", "UTF-8"); Status status = weibo.uploadStatus(msg, file); System.out.println("Successfully upload the status to [" + status.getText() + "]."); } catch (Exception e1) { e1.printStackTrace(); } } catch (Exception ioe) { System.out.println("Failed to read the system input."); } }
PHP示例
请从 微博SDK开发包下载 处下载PHP SDK(支持OAuth验证之版本)
代码示例如下:
<?php $boundary = uniqid('------------------'); $MPboundary = '--'.$boundary; $endMPboundary = $MPboundary. '--'; // 需要上传的图片所在路径 $filename = '/tmp/wiki.png'; $file = file_get_contents($filename); $multipartbody .= $MPboundary . "\r\n"; $multipartbody .= 'Content-Disposition: form-data; name="pic"; filename="wiki.png"'. "\r\n"; $multipartbody .= 'Content-Type: image/png'. "\r\n\r\n"; $multipartbody .= $file. "\r\n"; $k = "source"; // 这里改成 appkey $v = "appkey"; $multipartbody .= $MPboundary . "\r\n"; $multipartbody.='content-disposition: form-data; name="'.$k."\"\r\n\r\n"; $multipartbody.=$v."\r\n"; $k = "status"; $v = "要上传的文件,这里是描述文字"; $multipartbody .= $MPboundary . "\r\n"; $multipartbody.='content-disposition: form-data; name="'.$k."\"\r\n\r\n"; $multipartbody.=$v."\r\n"; $multipartbody .= "\r\n". $endMPboundary; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://api.t.sina.com.cn/statuses/upload.xml' ); curl_setopt($ch , CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$multipartbody ); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data; boundary=$boundary")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 修改成当前用户名及密码 curl_setopt($ch, CURLOPT_USERPWD, "username:password"); $msg = curl_exec($ch); //echo $multipartbody; echo 'ok.'; ?>
其他语言
可参考以下测试方式,将以下代码存成HTML,在微博登录的情况下用浏览器打开此页面可以上传图片,通过比较浏览器的调用(使用HttpWatch, FireBug等工具监测HTTP传送数据)参数来调整你的程序。注意将下面代码中appkey改成对应真实值。