Statuses/upload
目录 |
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改成真实值。
文档更新时间: 2011-08-16