浏览 6628 次
锁定老帖子 主题:通过搜狐微博API,发带图片的微博
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-23
最后修改:2010-08-23
首先,鄙视一下搜狐微博API,比起哪个新浪的日本人:Yusuke Yamamoto的还差一截呀! 没有完整的包装微博的API做为一个完整的SDK,真是让人费脑筋让人做一个测试. 话入正题: import java.io.File; import java.io.IOException; import java.net.URLEncoder; import javax.activation.MimetypesFileTypeMap; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.StringPart; public class SohuBlogger { HttpClient client = new HttpClient(); String SERVER_UPDATE = "http://api.t.sohu.com/statuses/upload.xml"; String USERNAME = "heweiya@gmail.com"; String PASSWORD = "XXXXX"; public static void main(String[] args) { SohuBlogger controller = new SohuBlogger(); try { controller.postMessage("测试微博!!!,这次带图片"); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void postMessage(String msg) throws HttpException, IOException { boolean needAuthentication = true; if (needAuthentication) { client.getParams().setAuthenticationPreemptive(true); client.getState().setCredentials( new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM), new UsernamePasswordCredentials(USERNAME, PASSWORD)); } PostMethod method = new PostMethod(SERVER_UPDATE); if (needAuthentication) { method.setDoAuthentication(true); } msg = URLEncoder.encode(msg, "UTF-8"); File file = new File("c:\\tt.jpg"); StringPart sp = new StringPart("status", msg); FilePart fp = new FilePart("pic", file.getName(), file,new MimetypesFileTypeMap().getContentType(file), "UTF-8"); fp.setTransferEncoding("binary"); MultipartRequestEntity mrp= new MultipartRequestEntity(new Part[]{sp,fp}, method .getParams()); method.setRequestEntity(mrp); //执行postMethod client.executeMethod(method); System.out.println("post status: " + method.getStatusLine().toString()); System.out.println("post page content: " + method.getResponseBodyAsString()); method.releaseConnection(); } } 为了增加一下鄙视的力量,大家看看新浪微博API如何做到上面的一切. public void pubSinaWeibo(List<BlogDetail> blogs) throws IOException{
for (int i = 0; i < blogs.size(); i++) {
//说明一下,这是我自己数据库里的东西,希望大家传入自己要用的东西,比如String类型,就不用使用FOR循环了.哈哈,懒得动代码了...
BlogDetail blog = blogs.get(i);
BlogInfo info = blog.getInfo();
System.out.println("正在导出日志" + i + ":" + info.getTitle());
Weibo weibo = new Weibo();
/*
* 此处需要填写AccessToken的key和Secret,可以从OAuthUpdate的执行结果中拷贝过来
*/
weibo.setToken("#######",
"######");
Status status;
try {
String weiboText = "@家军在" + blog.getPubDateTime() + "发布了QQ日志:"
+ info.getTitle() + ",请查看图片!";
String msg = URLEncoder.encode(weiboText, "UTF-8");
File file = new File("c:\\tt.jpg");
status = weibo.uploadStatus(msg, file);
//这一句就够了!
Thread.sleep(1350); // 休息0.25秒,太快会不会有问题?服务器负担太大?
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-20
楼主,请教一个问题,对于Weibo这个类,在一个类中作为一个属性好,还是每个发表微博中的方法中都新new 一个出来,感觉挺困惑的!
|
|
返回顶楼 | |
发表时间:2010-10-20
httpclient3的,
后来和版本没有了Multipart这些东西,上传二进制文件有没有好招啊 |
|
返回顶楼 | |
发表时间:2010-10-21
SOHU的是HTTP协议,任何语言都可以调用,新浪只是多封了一层JAVA方法而已,没有觉得有什么。
|
|
返回顶楼 | |
发表时间:2010-10-21
justcodeit 写道 SOHU的是HTTP协议,任何语言都可以调用,新浪只是多封了一层JAVA方法而已,没有觉得有什么。
兄弟!最近也在搞这些开发平台的开发,哎,碰到最那个的开心网,连申请个openid都超级麻烦,兄弟你有没有开心网开放平台的经验的,请指教一下啊!哎,搞得这么复杂,可能是开心网的财力不行啊! |
|
返回顶楼 | |
发表时间:2010-10-21
kaixin?不是也有API么?
openid是什么东西? 开心网只 要申请一个应用APIKEY就行的啊,和那些微博类似的. 那个开心连接有点烦人. |
|
返回顶楼 | |
发表时间:2011-04-20
我被搜狐微博的块烦死了,新浪的微博SDK从拿到到全部试一遍花了两个小时,搜狐的花了一个小时我愣是没弄明白哪是哪(这也和我刚做开发有一定关系,但是搜狐总不能无视新手啊),楼主的代码比它自带的示例代码好看多了,我先弄明白再说,真的感谢楼主了
|
|
返回顶楼 | |