Statuses/upload
小 (→使用示例) |
|||
(未显示4个用户的20个中间版本) | |||
第1行: | 第1行: | ||
− | + | {{api_desc2| | |
− | + | uri=statuses/upload| | |
+ | desc=发表带图片的微博。必须用POST方式提交pic参数,且Content-Type必须设置为multipart/form-data。图片大小<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=-F "pic=@1.png" -F "status=分享图片"| | ||
+ | result= | ||
+ | ===XML示例=== | ||
+ | <pre> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <status> | ||
+ | <created_at>Thu Dec 02 17:02:42 +0800 2010</created_at> | ||
+ | <id>4022982531</id> | ||
+ | <text>abc</text> | ||
+ | <source> | ||
+ | <a href="http://open.t.sina.com.cn">微博开放平台接口</a> | ||
+ | </source> | ||
+ | <favorited>false</favorited> | ||
+ | <truncated>false</truncated> | ||
+ | <geo/> | ||
+ | <in_reply_to_status_id></in_reply_to_status_id> | ||
+ | <in_reply_to_user_id></in_reply_to_user_id> | ||
+ | <in_reply_to_screen_name></in_reply_to_screen_name> | ||
+ | <thumbnail_pic>http://ww3.sinaimg.cn/thumbnail/6b8527b3jw6dbydoikpzuj.jpg</thumbnail_pic> | ||
+ | <bmiddle_pic>http://ww3.sinaimg.cn/bmiddle/6b8527b3jw6dbydoikpzuj.jpg</bmiddle_pic> | ||
+ | <original_pic>http://ww3.sinaimg.cn/large/6b8527b3jw6dbydoikpzuj.jpg</original_pic> | ||
+ | <user> | ||
+ | <id>1803888563</id> | ||
+ | <screen_name>LoopC</screen_name> | ||
+ | <name>LoopC</name> | ||
+ | <province>11</province> | ||
+ | <city>8</city> | ||
+ | <location>北京 海淀区</location> | ||
+ | <description></description> | ||
+ | <url></url> | ||
+ | <profile_image_url>http://tp4.sinaimg.cn/1803888563/50/0</profile_image_url> | ||
+ | <domain></domain> | ||
+ | <gender>m</gender> | ||
+ | <followers_count>1</followers_count> | ||
+ | <friends_count>1</friends_count> | ||
+ | <statuses_count>2</statuses_count> | ||
+ | <favourites_count>0</favourites_count> | ||
+ | <created_at>Fri Aug 27 00:00:00 +0800 2010</created_at> | ||
+ | <following>false</following> | ||
+ | <verified>false</verified> | ||
+ | <allow_all_act_msg>false</allow_all_act_msg> | ||
+ | <geo_enabled>true</geo_enabled> | ||
+ | </user> | ||
+ | </status> | ||
+ | </pre> | ||
+ | ===JSON示例=== | ||
+ | <pre> | ||
+ | { | ||
− | + | "created_at": "Thu Dec 02 17:06:40 +0800 2010", | |
− | + | "id": 4023064087, | |
− | + | "text": "abc", | |
− | + | "source": "微博开放平台接口", | |
− | + | "favorited": false, | |
− | + | "truncated": false, | |
− | + | "in_reply_to_status_id": "", | |
− | + | "in_reply_to_user_id": "", | |
− | + | "in_reply_to_screen_name": "", | |
− | === | + | "thumbnail_pic": "http://ww2.sinaimg.cn/thumbnail/6b85067djw6dbydsnam1xj.jpg", |
− | + | "bmiddle_pic": "http://ww2.sinaimg.cn/bmiddle/6b85067djw6dbydsnam1xj.jpg", | |
− | + | "original_pic": "http://ww2.sinaimg.cn/large/6b85067djw6dbydsnam1xj.jpg", | |
− | + | "geo": { | |
− | + | "type": "Point", | |
+ | "coordinates": [ | ||
+ | 39.8765, | ||
+ | 119.5678 | ||
+ | ] | ||
+ | }, | ||
+ | "user":{ | ||
+ | "id": 1803880061, | ||
+ | "screen_name": "LoopB", | ||
+ | "name": "LoopB", | ||
+ | "province": "11", | ||
+ | "city": "8", | ||
+ | "location": "北京 海淀区", | ||
+ | "description": "", | ||
+ | "url": "", | ||
+ | "profile_image_url": "http://tp2.sinaimg.cn/1803880061/50/0/0", | ||
+ | "domain": "", | ||
+ | "gender": "f", | ||
+ | "followers_count": 1, | ||
+ | "friends_count": 1, | ||
+ | "statuses_count": 14, | ||
+ | "favourites_count": 4, | ||
+ | "created_at": "Fri Aug 27 00:00:00 +0800 2010", | ||
+ | "following": false, | ||
+ | "allow_all_act_msg": false, | ||
+ | "geo_enabled": true, | ||
+ | "verified": false | ||
+ | } | ||
+ | } | ||
+ | </pre>| | ||
+ | useAge= | ||
+ | * 上传图片需要采用multipart/form-data方式提交pic参数,并且放在POST请求的body里。另外,只有以oauth_开头的参数才需要参加OAuth的签名。可以参考: [http://www.ietf.org/rfc/rfc1867.txt Form-based File Upload in HTML] 第6段: Examples | ||
+ | *如果不确定如何在发送POST请求中签名,可以参考下面的示例:| | ||
+ | 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> | |
− | + | 代码示例如下: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<?php | <?php | ||
$boundary = uniqid('------------------'); | $boundary = uniqid('------------------'); | ||
第138行: | 第189行: | ||
echo 'ok.'; | echo 'ok.'; | ||
?> | ?> | ||
− | + | ===其他语言=== | |
− | + | 可参考以下测试方式,将以下代码存成HTML,在微博登录的情况下用浏览器打开此页面可以上传图片,通过比较浏览器的调用参数来调整你的程序。(可以使用HttpWatch, FireBug等工具监测HTTP传送数据)。注意将下面代码中appkey改成真实值。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf8"></head><body> | <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf8"></head><body> | ||
第195行: | 第201行: | ||
<input type="hidden" name="source" value="改成你的appkey" /> | <input type="hidden" name="source" value="改成你的appkey" /> | ||
</form></body></html> | </form></body></html> | ||
+ | }} |
2012年9月24日 (一) 11:37的最后版本
目录 |
statuses/upload
发表带图片的微博。必须用POST方式提交pic参数,且Content-Type必须设置为multipart/form-data。图片大小<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方式提交pic参数,并且放在POST请求的body里。另外,只有以oauth_开头的参数才需要参加OAuth的签名。可以参考: Form-based File Upload in HTML 第6段: Examples
- 如果不确定如何在发送POST请求中签名,可以参考下面的示例:
返回结果
XML示例
<?xml version="1.0" encoding="UTF-8"?> <status> <created_at>Thu Dec 02 17:02:42 +0800 2010</created_at> <id>4022982531</id> <text>abc</text> <source> <a href="http://open.t.sina.com.cn">微博开放平台接口</a> </source> <favorited>false</favorited> <truncated>false</truncated> <geo/> <in_reply_to_status_id></in_reply_to_status_id> <in_reply_to_user_id></in_reply_to_user_id> <in_reply_to_screen_name></in_reply_to_screen_name> <thumbnail_pic>http://ww3.sinaimg.cn/thumbnail/6b8527b3jw6dbydoikpzuj.jpg</thumbnail_pic> <bmiddle_pic>http://ww3.sinaimg.cn/bmiddle/6b8527b3jw6dbydoikpzuj.jpg</bmiddle_pic> <original_pic>http://ww3.sinaimg.cn/large/6b8527b3jw6dbydoikpzuj.jpg</original_pic> <user> <id>1803888563</id> <screen_name>LoopC</screen_name> <name>LoopC</name> <province>11</province> <city>8</city> <location>北京 海淀区</location> <description></description> <url></url> <profile_image_url>http://tp4.sinaimg.cn/1803888563/50/0</profile_image_url> <domain></domain> <gender>m</gender> <followers_count>1</followers_count> <friends_count>1</friends_count> <statuses_count>2</statuses_count> <favourites_count>0</favourites_count> <created_at>Fri Aug 27 00:00:00 +0800 2010</created_at> <following>false</following> <verified>false</verified> <allow_all_act_msg>false</allow_all_act_msg> <geo_enabled>true</geo_enabled> </user> </status>
JSON示例
{ "created_at": "Thu Dec 02 17:06:40 +0800 2010", "id": 4023064087, "text": "abc", "source": "微博开放平台接口", "favorited": false, "truncated": false, "in_reply_to_status_id": "", "in_reply_to_user_id": "", "in_reply_to_screen_name": "", "thumbnail_pic": "http://ww2.sinaimg.cn/thumbnail/6b85067djw6dbydsnam1xj.jpg", "bmiddle_pic": "http://ww2.sinaimg.cn/bmiddle/6b85067djw6dbydsnam1xj.jpg", "original_pic": "http://ww2.sinaimg.cn/large/6b85067djw6dbydsnam1xj.jpg", "geo": { "type": "Point", "coordinates": [ 39.8765, 119.5678 ] }, "user":{ "id": 1803880061, "screen_name": "LoopB", "name": "LoopB", "province": "11", "city": "8", "location": "北京 海淀区", "description": "", "url": "", "profile_image_url": "http://tp2.sinaimg.cn/1803880061/50/0/0", "domain": "", "gender": "f", "followers_count": 1, "friends_count": 1, "statuses_count": 14, "favourites_count": 4, "created_at": "Fri Aug 27 00:00:00 +0800 2010", "following": false, "allow_all_act_msg": false, "geo_enabled": true, "verified": false } }
其他
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改成真实值。
文档更新时间: 2012-09-24