Statuses/upload
第12行: | 第12行: | ||
{{api_args_colspan|1=<font style="color:#ee6666">注意:lat和long参数需配合使用,用于标记发表微博消息时所在的地理位置,只有用户设置中geo_enabled=true时候地理位置信息才有效。</font>}}| | {{api_args_colspan|1=<font style="color:#ee6666">注意:lat和long参数需配合使用,用于标记发表微博消息时所在的地理位置,只有用户设置中geo_enabled=true时候地理位置信息才有效。</font>}}| | ||
getParam=| | getParam=| | ||
− | postParam=-F "pic=@1.png" | + | postParam=-F "pic=@1.png" -F "status=分享图片"| |
result= | result= | ||
===XML示例=== | ===XML示例=== |
2010年12月2日 (四) 17:37的版本
目录 |
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> <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改成真实值。