|
|
(未显示1个用户的7个中间版本) |
第3行: |
第3行: |
| | | |
| | | |
− | {{Api_url|statuses/upload}} | + | {{Api_url|account/update_notice}} |
| | | |
| {{Api_format|xml, json}} | | {{Api_format|xml, json}} |
第10行: |
第10行: |
| | | |
| === 请求参数=== | | === 请求参数=== |
− | * status. 必填参数, 要更新的微博信息。必须做URLEncode,信息内容不超过140个汉字。支持全角、半角字符。 | + | *comment:新评论提醒,0—不提醒,1—提醒,默认值1 |
− | * pic. 必填参数。仅支持JPEG,GIF,PNG图片,为空返回400错误。目前上传图片大小限制为<1M。 | + | *follower:新粉丝提醒,0—不提醒,1—提醒,默认值1 |
− | * lat. 可选参数,纬度,发表当前微博所在的地理位置,有效范围 -90.0到+90.0, +表示北纬。只有用户设置中geo_enabled=true时候地理位置才有效。(保留字段,暂不支持) | + | *dm:新私信提醒,0—不提醒,1—提醒,默认值1 |
− | * long. 可选参数,经度。有效范围-180.0到+180.0, +表示东经。(保留字段,暂不支持) | + | *mention:@提到我提醒,0—不提醒,1—提醒,默认值1 |
− | | + | *from_user:设置哪些提到我的微博计入提醒数,微博作者身份,0--所有人,1—关注的人 |
− | === 使用说明===
| + | *status_type:设置哪些提到我的微博计入提醒数,微博类型,0—所有微博,1—原创的微博 |
− | * 如果没有登录或超过发布上限,将返回403错误 | + | |
− | * 系统将忽略重复发布的信息。每次发布将比较最后一条发布消息,如果一样将被忽略。因此用户不能连续提交相同信息。发布成功返回发布的信息ID,否则返回为空。
| + | |
− | * 如果使用的Oauth认证,图片参数pic不参与签名。 | + | |
| | | |
| === 返回结果 === | | === 返回结果 === |
| XML示例: | | XML示例: |
| <?xml version="1.0" encoding="UTF-8"?> | | <?xml version="1.0" encoding="UTF-8"?> |
− | <status> | + | <result>true</result> |
− | <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示例: | | JSON示例: |
− | | + | {"result":true} |
− | {"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":<br/> {"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}
| + | |
− | }
| + | |
− | {{Param_status}}
| + | |
− | {{Param_user}}
| + | |
| | | |
| === 使用示例=== | | === 使用示例=== |
| * xml: | | * xml: |
− | curl -u uid:password -F "pic=@aaa.jpg" -F "source=appkey" -F "status=abaaaa" http://api.t.sina.com.cn/statuses/upload.xml | + | curl -u uid:password -d "source=appkey&follower=1&status_type=1&from_user=1&dm=1&metion=1&comment=1" http://api.t.sina.com.cn/account/update_notice.xml |
| | | |
| * json: | | * json: |
− | curl -u uid:password -F "pic=@aaa.jpg" -F "source=appkey" -F "status=abaaaa" http://api.t.sina.com.cn/statuses/upload.json | + | curl -u uid:password -d "source=appkey&follower=1&status_type=1&from_user=1&dm=1&metion=1&comment=1" http://api.t.sina.com.cn/account/update_notice.json |
− | | + | |
− | ====PHP示例==== | + | |
− | 请从 [[SDK | 微博SDK开发包下载]] 处下载PHP SDK(支持OAuth验证之版本)<br>
| + | |
− | 代码示例如下:
| + | |
− | <?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.';
| + | |
− | ?>
| + | |
− | | + | |
− | ====Java示例====
| + | |
− | 请从 [[SDK | 微博SDK开发包下载]] 下载Java SDK
| + | |
− | 参看 examples/OauthUpload.java, 运行 java OauthUpload accesstoken accesstoken_secret filepath
| + | |
− | 代码示意如下
| + | |
− | | + | |
− | public static void main(String[] args) {
| + | |
− | try {
| + | |
− | System.setProperty("twitter4j.oauth.consumerKey", Twitter.CONSUMER_KEY);
| + | |
− | System.setProperty("twitter4j.oauth.consumerSecret", Twitter.CONSUMER_SECRET);
| + | |
− | Twitter twitter = new Twitter();
| + | |
− | // you can get access token and access token secret returned from OAuthUpdate.java
| + | |
− | twitter.setToken(args[0], args[1]);
| + | |
− |
| + | |
− | try {
| + | |
− | byte[] content = readFileImage(args[2]);
| + | |
− | System.out.println("content length:" + content.length);
| + | |
− | ImageItem pic = new ImageItem("pic", content);
| + | |
− | Status status = twitter.uploadStatus("测试文字", pic);
| + | |
− |
| + | |
− | System.out.println("Successfully upload the status to ["
| + | |
− | + status.getText() + "].");
| + | |
− | } catch (Exception e1) {
| + | |
− | // TODO Auto-generated catch block
| + | |
− | e1.printStackTrace();
| + | |
− | }
| + | |
− | } catch (Exception ioe) {
| + | |
− | System.out.println("Failed to read the system input.");
| + | |
− | }
| + | |
− | }
| + | |
− |
| + | |
− | public static byte[] readFileImage(String filename) throws IOException {
| + | |
− | BufferedInputStream bufferedInputStream = new BufferedInputStream(
| + | |
− | new FileInputStream(filename));
| + | |
− | int len = bufferedInputStream.available();
| + | |
− | byte[] bytes = new byte[len];
| + | |
− | int r = bufferedInputStream.read(bytes);
| + | |
− | if (len != r) {
| + | |
− | bytes = null;
| + | |
− | throw new IOException("读取文件不正确");
| + | |
− | }
| + | |
− | bufferedInputStream.close();
| + | |
− | return bytes;
| + | |
− | }
| + | |
− | | + | |
− | ====其他语言====
| + | |
− | 可参考以下测试方式,将以下代码存成HTML,在微博登录的情况下用浏览器打开此页面可以上传图片,通过比较浏览器的调用(使用HttpWatch, FireBug等工具监测HTTP传送数据)参数来调整你的程序。注意将下面代码中appkey改成对应真实值。
| + | |
− | | + | |
− | <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf8"></head><body>
| + | |
− | <form name="uploadForm" method="POST"
| + | |
− | action="http://api.t.sina.com.cn/statuses/upload.xml"
| + | |
− | enctype="multipart/form-data" >
| + | |
− | <input type="text" name="status" value="填写要发表的文字" />
| + | |
− | <input type="file" name="pic" value="浏览文件" />
| + | |
− | <input type="submit" value="上传"/>
| + | |
− | <input type="hidden" name="source" value="改成你的appkey" />
| + | |
− | </form></body></html>
| + | |