首先,鄙视一下搜狐微博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();
}
}
}
分享到:
相关推荐
由于标题提及“带图片说明”,我们可以推测此项目可能包含如何使用图像资源或展示API请求结果的示例。 【描述】:“Twip,Twitter API proxy in PHP.带图片说明” 描述进一步确认了项目的核心功能,即用PHP实现的...
发带图片的贴子教程1
主要介绍了Python脚本实现自动发带图的微博的相关资料,需要的朋友可以参考下
本文将深入讲解如何实现一个仿微信发带图片朋友圈的UI设计。 首先,我们需要理解UI设计的基本原则。用户界面(UI)设计的目标是创建一个直观、易用且吸引人的环境,使用户能够有效地与应用程序进行交互。在设计仿...
按手机拍照键拍照后,选菜单直接“织...代码原理:里面使用了Sina Open API,免费从新浪申请的,可以发微博,查看,搜索等等。使用BlackBerry API和相机preview模式集成,加菜单。 2010年6月11日 版本0.51,含源代码。
代码原理:里面使用了Sina Open API,免费从新浪申请的,可以发微博,查看,搜索等等。使用BlackBerry API和相机preview模式集成,加菜单。 适应手机:8900/9700等OS 5.0的手机,走cmnet apn通道 2010.06.11 ...
VB6本身并不直接支持SMTP,所以我们需要借助Windows API(Application Programming Interface)来实现这一功能。API函数允许我们调用操作系统底层的功能,如发送邮件。 关键的API函数包括: 1. `Send-MailMessage`...
总之,发送邮件是.NET开发中的基础操作,通过`System.Net.Mail`命名空间的类,我们可以轻松实现这个功能。添加附件并进行大小和格式验证可以确保邮件符合发送规范,提高系统安全性。记得在实际使用时,根据具体需求...
长期来看,公司具有高成长性,产品组合向生物药品、化学药品领域扩展,各个研发阶段均拥有产品储备且协同性强,未来有望持续通过内生+外研完善管线布局、拓展品类边界,立足研发基因强化销售能力,有望成为中国医美...
它提供了丰富的API,包括网络模块,使得在应用程序中集成邮件发送功能变得简单。 在Qt中,邮件发送主要通过`QNetworkAccessManager`和`QMailMessage`类来实现。`QMailMessage`是用于构建邮件对象的类,可以设置主题...
考生需学会如何从图片的细节出发,观察人物、服饰、表情等元素,通过这些细节来展开对图片主题的深入理解。例如,文中提到了发带、耳环、项链等服饰细节,这些都是构建评论和分析的基础。 再次,词汇应用。考生在...
例如,对话中涉及到女孩喜欢的音乐类型、红色发带的所有者、Tina被母亲禁止的行为、火车的预计到达时间以及对话发生地点等。 3. **听短文选择答案**: 这一环节让学生听一段短文,并就短文内容回答五个问题。这测试...
以上代码中,`MIMEBase`用于创建一个可以携带附件的MIME对象,然后通过`encode_base64`进行编码,以满足邮件传输的要求。`Content-Disposition`头字段定义了附件的名称。 请注意,不同的邮件服务商可能有不同的SMTP...
CRC算法的核心在于选择一个合适的多项式作为生成多项式,通过对原始数据进行多项式除法运算,得到的余数即为CRC校验码。 #### 二、CAPL语言简介 CAPL(CAN Application Layer)是用于开发车载网络应用的一种高级...
发上来是来求助的:在sun和nokia的模拟器上能正常发邮件,但是到了手机上就显示不能解析主机名(could not resolve hostname),查了下应该是...发图片啦文本啦肯定是木有问题的~自带简单的联系人列表方便填写收件人
例如,对话中涉及了音乐类型偏好、发带的所有权、家长的规定、火车到站时间、书籍来源和背包丢失地点等,这些问题涵盖了日常生活中的各种话题,有助于提高学生的实际应用能力。 3. **听短文选择答案**:这部分要求...
平台是一个多租赁用户的在线SaaS系统,因此会给平台带来大量的高并发的请求,361CRM平台是一个多层次的结构,而且采用了REST架构,REST天生就是分布式,因此通过物理部署就可以实现高并发带的负载均衡。...
针对浅埋深矿井首次发生在工作面的冲击地压问题,通过对宽沟煤矿W1143工作面地质及生产技术条件分析,初步得出煤层强冲击倾向性、坚硬难垮顶板、"三面孤岛"空间结构、地震多发带、水平地应力和断层等地质构造是影响...