《我的豆瓣》项目开发(二)

1、oauth认证

    用户登录时可以使用第三方的账号登录,为了保证账号信息不被泄露,登录时会跳转到第三方的登录界面,
    比如腾讯QQ,然后腾讯会返回登陆的结果。
    例如通过qq号登陆京东网
    http://fanli.qq.com/fanli_connect/qq_login
    Fwww.360buy.com&url=http%3A%2F%2Fqq.360buy.com
    68dfe17148

    判断这个页面的服务器是在那一个公司? 
    顶级域名 qq.com 顶级域名才真正代表该网站是否真正属于哪家公司。紧邻.com的为顶级域名
    二级域名 fanli.qq.com

2、所用到的工具类

    commons-codec-1.3.jar  公用的工具类 
    commons-httpclient-3.1.jar httpclient http请求
    commons-logging-1.1.jar  日志的输出
    c3p0 jdbc 
    douban-java-0.2.2-r34.jar 获取服务器数据 xml 格式 解析xml格式数据
    gdata-client-1.0.jar
    gdata-core-1.0.jar google提供的解析xml的工具 
    oauth-1.3.jar 用户身份认证的jar包 

3、开放平台

    开放平台是指软件系统通过公开其应用程序编程接口(API)或函数(function)来使外部的程序可以增加该
    软件系统的功能或使用该软件系统的资源,而不需要更改该软件系统的源代码。

    网站 暴露出来一个webservice.  
    游戏大厅, 提供了一些接口.
    web游戏 qq偷菜
    广义讲 windows操作系统 也是一个开放平台.
    核心的api暴露 windows api
    android os 

    豆瓣网站 社交开放式平台
    新浪微博
    人人网 
    豆瓣API是豆瓣为第三方开发人员提供的编程接口。
    利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能


    什么是服务器的接口 什么是服务器提供的api

    客户端通过接口访问服务器的数据 json xml html 

    实际上的操作
    1.url
    2.url 获取到一个urlconntection;
    3.获取到服务器返回回来的具体数据信息
    4.解析我们关心的内容
    5.显示界面

    使用开放平台的api 第一步
    需要申请一个api使用key文件 
    为了保护豆瓣用户的数据;防止API被滥用或恶意使用,豆瓣要求每个API的使用者申请一个API Key, 
    而每个API Key唯一标识一个API使用者. 会在规定的时间内限制访问服务器的次数。

    黑客, 抓取人人网数据的操作.如果在一分钟内频繁的访问人人网的数据,
    服务器根据api 的key 可以把你的客户端的请求给禁用.

    使用开放平台的步骤:
    申请API KEY和密钥,然后调用doubanservice传入程序名称,API KEY以及密钥,获取到授权的地址,
    然后根据授权的地址进行授权,然后打印tokens数组的前两个元素获得令牌和密钥。目的是为了验证应用对
    于账号用户的真实性和可靠性。
    如果用户不取消授权,accesstoken和tokensercet是不会发生改变的。

4、模拟在浏览器进行登录操作

    登录的时候,实际上是向服务器发送一个post信息
    创建一个httppost,传入url。创建键值对传入表单中每个节点的内容。
    List<NameValuePair>多处用于Java像url发送Post请求。在发送post请求时用该list来存放参数。
    然后创建一个表单的实体,用httppost发送实体
    再创建浏览器执行post操作
        HttpPost httppost = new HttpPost("http://www.douban.com/accounts/login");
        //设置http post请求提交的数据 
        List<NameValuePair> namevaluepairs  = new ArrayList<NameValuePair>();
        namevaluepairs.add(new BasicNameValuePair("source", "simple"));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(namevaluepairs,"utf-8");
        httppost.setEntity(entity);
        //  创建一个浏览器 
        DefaultHttpClient client = new DefaultHttpClient();
        // 完成了用户登陆豆瓣的操作 
        HttpResponse response = client.execute(httppost);

5、用代码检验是否需要验证码:

    jericho.html-3.1.jar是用来解析网页源代码的架包。
    通过分析源代码中每个节点的信息来判断。
    /**
     * 判断是否需要输入验证码 
     */
    public static String isNeedCaptcha(Context context) throws Exception{
        String loginurl = context.getResources().getString(R.string.loginurl);
        URL url = new URL(loginurl);

         URLConnection  conn  = url.openConnection();
         Source source = new Source(conn);
         List<Element> elements = source.getAllElements("input");
         for(Element element : elements){
               String result = element.getAttributeValue("name");
               if("captcha-id".equals(result)){
                   return element.getAttributeValue("value");
               }
         }
         return null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值