自从新浪微博开放api之后,很多爱好者纷纷开发自己的新浪微博客户端,虽然官方平台提供了很多已经开发好的类库,但作为java编程爱好者来说,总想自己实现其中的类库,从而使用自己对网络编程更深入的了解,也是说只需查看新浪微博开放的API:http://open.t.sina.com.cn/wiki/index.php/API%E6%96%87%E6%A1%A3就可以自己开发了。但是需要注意的是。很多接口需要用户的id和密码。但是在网络上传输时是经过加密的,但是新浪微博是用什么加密算法呢?经查看得是,其加密类如下: private static final char last2byte = (char) Integer.parseInt("00000011", 2);
private static final char last4byte = (char) Integer.parseInt("00001111", 2);
private static final char last6byte = (char) Integer.parseInt("00111111", 2);
private static final char lead6byte = (char) Integer.parseInt("11111100", 2);
private static final char lead4byte = (char) Integer.parseInt("11110000", 2);
private static final char lead2byte = (char) Integer.parseInt("11000000", 2);
private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};
public BASE64Encoder() {
}
public String encode(byte[] from) {
StringBuffer to = new StringBuffer((int) (from.length * 1.34) + 3);
int num = 0;
char currentByte = 0;
for (int i = 0; i < from.length; i++) {
num = num % 8;
while (num < 8) {
switch (num) {
case 0:
currentByte = (char) (from[i] & lead6byte);
currentByte = (char) (currentByte >>> 2);
break;
case 2:
currentByte = (char) (from[i] & last6byte);
break;
case 4:
currentByte = (char) (from[i] & last4byte);
currentByte = (char) (currentByte << 2);
if ((i + 1) < from.length) {
currentByte |= (from[i + 1] & lead2byte) >>> 6;
}
break;
case 6:
currentByte = (char) (from[i] & last2byte);
currentByte = (char) (currentByte << 4);
if ((i + 1) < from.length) {
currentByte |= (from[i + 1] & lead4byte) >>> 4;
}
break;
}
to.append(encodeTable[currentByte]);
num += 6;
}
}
if (to.length() % 4 != 0) {
for (int i = 4 - to.length() % 4; i > 0; i--) {
to.append("=");
}
}
return to.toString();
}
}
base64编码方式很简间,就是把每3个字符扩展到4个字符上即3*8=4*6=24,然后把这4个6位扩展到8位上。高位补0.
下面简单介绍一下其应用。我举个例子:public class GetFriendMessage {
public static void main(String[] args){
try {
URL url=new URL("http://api.t.sina.com.cn/statuses/friends_timeline.xml?source=xxxxxx");//此处请看api
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
String basic="Basic " +
new String(new BASE64Encoder().encode(("xxxxx" + ":"+"xxxx").getBytes()));//此处xxx分加为用户长账号和密码
connection.addRequestProperty("Authorization",basic);
connection.setRequestMethod("GET");
//onnection.setr*/
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
String message=reader.readLine();
while(message!=null){
System.out.println(message);
message=reader.readLine();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
返回结果就是该用户好友的一些最新信息,部分返回结果如下 :<?xml version="1.0" encoding="UTF-8"?>
<statuses><status><created_at>Sun May 29 20:36:18 +0800 2011</created_at>
<id>11385192916</id>
<text>【英国威廉婚礼 义乌赚亿元】英国威廉王子与凯特?米德尔顿的“童话婚礼”举办
至今刚好整一个月,在远离英国的中国浙江义乌,与这场婚礼有关的生意账目也盘点出来了。
这场英国皇室婚礼庆典,前前后后居然让义乌的私营企业老板和市场商户们赚了个盆满钵满。
http://t.cn/hDKaZk</text><source><a href="http://weibo.com">新浪微博</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>
<mid>5612115989781482830</mid><user><id>1700720163</id><screen_name>钱江晚报
</screen_name>
<name>钱江晚报</name><province>33</province><city>1</city><location>浙江 杭州</location>
<description>浙江发行量最大,覆盖面最广,品牌影响力最大的报纸。和读者一道仰望头顶星空,温暖彼此心灵,
是我们的理想。</description><url>http://www.qjwb.com.cn</url><profile_image_url>
http://tp4.sinaimg.cn/1700720163/50/1279888447/1</profile_image_url><domain>qjwb
</domain><gender>m</gender><followers_count>398507</followers_count>
<friends_count>230</friends_count><statuses_count>3103</statuses_count>
<favourites_
然后只需对这个xml文件解析了。sax,dom4j,jdom都可以。如果喜欢操作json,那只需把请求对象改成.json格式的就行了,不解释了。
分享到:
相关推荐
JAVA开发规范,开发注意事项,JAVA入门必学文档,java命名规则等说明,JAVA开发规范,开发注意事项,JAVA入门必学文档,java命名规则等说明,
微博发布注意事项微应.pdf
仿新浪微博flash上传头像组件演示来源网络,只是我们修改为ASP版本。内置小小广告,发布目的只为给需要的人一个开发思路。版权我也不知道该归谁所有。若有侵犯版权行为,请来信告知。 安装及部署: 1. 懒人...
WEB开发注意事项,在开发的过程中有时候容易犯一些很小但是却暗藏祸患的错误,要想避免类似的情况发生,请细看
开发SQL注意事项开发SQL注意事项开发SQL注意事项开发SQL注意事项
Oracel开发注意事项 .txt
微博推广,需要注意的地方,避免引起没有必要的麻烦,看清楚合同
硬件开发流程及注意事项,电子产品开发流程,硬 件 开 发 ,软 件 开 发 ,开发过程注意事项 ,开 发 实 例 ,电子产品开发流程
基于Java的网购系统设计与开发的注意事项.pdf
里面包裹界面注意事项,开发注意事项,代码注意事项,设计注意事项
Java开发注意事项,编程人员可以看看哦
该文档给出了软件设计与开发类毕设论文的一些写作注意事项,帮助把毕设论文写得更规范更专业。
签订软件开发合同注意事项(易法通分享).docx
本文是根据FPGA技术牛人历年来的经验所总结出来的关于FPGA开发基本流程及注意事项基本介绍,希望给初学者丁点帮助。
嵌入式开发注意事项(面试必备),希望对大家有帮助,可以下载
小程序的一些注意事项和规则,和一些UI数据库,放在电脑里没用,给你们
软件开发合同注意事项.doc
小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf小程序开发注意事项.pdf
正在把一个 c/s 的 mis 系统改造为基于 webservice 的 c/s/s 架构,以下是全程记录
PI数据库开发注意事项