`
zhaole609
  • 浏览: 342770 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

新浪微博开发的一点注意事项

阅读更多

自从新浪微博开放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格式的就行了,不解释了。

分享到:
评论

相关推荐

    新浪微博API开发WEB应用

    新浪微博API开发Web应用是一项技术性强且充满挑战的任务,它涉及到互联网应用程序与社交媒体平台的深度集成。在这个过程中,开发者需要理解并掌握一系列关键概念和技术,以实现有效的数据交互和功能实现。以下是对...

    新浪微博登陆开发流程 宋正河整理

    《新浪微博登录开发流程详解》 在互联网应用中,微博作为一种重要的社交平台,其登录功能的开发对于开发者来说是一项必备技能。本文将详细讲解由宋正河整理的新浪微博登录开发流程,帮助开发者理解并掌握这一过程。...

    新浪微博下载(新浪微博备份工具)(新浪微博导出)

    【新浪微博下载(新浪微博备份工具)(新浪微博导出)】 在当今社交媒体盛行的时代,新浪微博作为中国的主要社交平台之一,用户们在上面分享生活点滴、观点见解,甚至进行商业活动。然而,随着时间的推移,个人的微博...

    android开发新浪微博客户端+完整攻略

    ### Android开发新浪微博客户端知识点梳理 #### 一、项目概述与准备 - **开发背景与目的**:本项目旨在通过开发一款Android版新浪微博客户端,作为学习Android开发技能的实践案例。作者初涉Android开发领域,希望...

    新浪微博开放接口的相关资料,包含开发微博客户端的全部资料!(下)

    《全面解析:基于新浪微博开放接口的客户端开发》 在当今社交媒体盛行的时代,新浪微博作为一个重要的社交平台,其开放接口为开发者提供了构建个性化微博客户端的可能。本文将深入探讨“新浪微博开放接口”的相关...

    定时发送 新浪微博 程序 c# 实现 所有源码

    4. `说明.txt`:这可能是开发者提供的关于如何使用或编译代码的简要指南或注意事项。 5. `oAuthSina`:这个名字可能指的是一个与新浪OAuth相关的类或者文件,用于处理登录验证和获取访问令牌。 综合以上信息,这个...

    新浪微博 授权 分享 代码实例和文档

    在Android平台上进行新浪微博的授权与分享,是移动应用开发者经常遇到的需求。本资源"新浪微博 授权 分享 代码实例和文档"提供了一整套实际运行流程的实例代码和相关文档,帮助开发者更好地理解和实现这一功能。 一...

    新浪微博开放平台SDK

    ### 注意事项 1. **权限申请**:某些高级功能可能需要申请额外的权限,如发布原创微博可能需要通过审核。 2. **数据隐私**:遵循微博的开放平台政策,尊重用户数据隐私,合法合规使用。 3. **性能优化**:合理...

    新浪微博相册下载

    四、注意事项 在使用过程中,用户需要注意以下几点: 1. 账号安全:确保在安全环境下登录,防止账号信息泄露。 2. 权限问题:下载他人相册应尊重版权,获取对方许可,避免侵犯隐私。 3. 存储空间:预估好所需存储...

    新浪微博 api Oauth认证.

    5. **安全注意事项**:在处理用户授权时应考虑的安全措施,如如何存储和保护令牌,避免令牌被盗用。 6. **Microblog.apk应用分析**:应用的架构设计,如何在Android应用中集成OAuth,以及它如何与新浪微博API进行...

    android新浪微博SDK精简版

    6. **优化与注意事项**: - 异步处理:大部分API调用应放在异步线程中,避免阻塞主线程。 - 错误处理:对API调用的返回结果进行错误检查,处理可能出现的网络、授权等问题。 - 用户体验:合理设计UI交互,遵循...

    新浪微博安卓SDK

    在这个名为"新浪微博安卓SDK"的压缩包中,我们可以找到用于在Android平台上进行新浪微博客户端二次开发的所有必要资源。这个SDK允许开发者轻松实现分享内容、登录验证、获取用户信息、实时推送等功能,从而提升用户...

    新浪微博分享demo

    四、注意事项 1. **处理授权状态**:确保用户已授权,否则分享会失败。如果用户未授权,需引导用户完成授权流程。 2. **资源优化**:合理管理图片资源,过大可能会导致分享失败,建议压缩后再上传。 3. **异常处理**...

    仿新浪微博下拉刷新android实例

    在Android应用开发中,"仿新浪微博下拉刷新"是一种常见的用户体验设计,用于更新列表数据。这一功能让用户在列表顶部向下拉动时触发加载新内容的机制,常见于新闻、社交网络等应用。`PullToRefresh`库是实现这一功能...

    新浪微博第三方登陆API

    ### API调用及安全注意事项 1. **HTTPS安全通信**: 所有API调用应通过HTTPS协议进行,确保数据传输的安全性。 2. **请求签名**: 新浪微博API要求在请求中加入签名(Signature),这通常基于AppKey、AppSecret以及...

    新浪微博OAuth 验证

    总结,新浪微博OAuth验证是开发人员整合微博功能的关键步骤,理解并熟练掌握这个过程能帮助开发者构建安全、功能丰富的应用。在使用过程中,注意遵循最佳实践,确保用户数据的安全。同时,不断关注微博开放平台的...

    怎么查看新浪微博在线状态.docx

    新浪微博是一款深受广大华人喜爱的社交平台,它基于Facebook和Twitter的概念而开发,集成了多种功能,包括发布动态(微博)、关注他人以及即时通信等。作为一款社交软件,了解好友的在线状态对于即时交流尤为重要。...

    利用新浪微博开放平台开发javaweb应用----用户授权.pdf

    本文将详细介绍如何利用新浪微博开放平台开发 Java Web 应用,包括应用注册、用户授权等过程,并提供了详细的步骤和注意事项。 一、注册新浪微博开放平台账号 要想成为新浪开放平台的开发者,首先需要登录新浪开放...

    新浪微博联合登录

    五、注意事项 1. 安全存储:访问令牌是敏感信息,需要安全存储,避免泄露。 2. 刷新令牌:访问令牌有时效性,刷新令牌用于在过期后获取新的访问令牌,保持用户会话的连续性。 3. 错误处理:对可能出现的网络错误、...

    新浪微博Android客户端.rar

    2. readme.md:这是一个Markdown格式的文件,通常用于提供项目的基本信息、安装指南、使用说明或者开发注意事项。在这里,它可能会包含关于如何编译、运行或理解这个Android客户端的详细步骤。 3. 新浪微博Android...

Global site tag (gtag.js) - Google Analytics