|
|
(未显示1个用户的2个中间版本) |
第20行: |
第20行: |
| XML示例: | | XML示例: |
| <?xml version="1.0" encoding="UTF-8"?> | | <?xml version="1.0" encoding="UTF-8"?> |
− | <result>true</result> | + | <result>true</result> |
| | | |
| JSON示例: | | JSON示例: |
| {"result":true} | | {"result":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>
| + | |