点点网技术调研(JAVA API)

下载好源码,在eclipse中布署后。(其中详细的请查看源码)

1.申请点点网帐号和密码:

2.修改里面的常量类DDAPIConstants

 

3.根据刚才申请到的Client ID 来取得CODE

https://api.diandian.com/oauth/authorize?client_id=uGv2iH1ONw&response_type=code&scope=read,write

 

然后输入帐号和密码之后,点击确定,会在brower  url中出现:

http://127.0.0.1?code=jACgLB

 

其中这个code (jACgLB)非常重要.

 

4.查看测试类DDClientTest

修改里面的testDDClient代码,

如下所示:

    

 //数据库操作类

         DBConndb = new DBConn();

        DDClient dd = newDDClient(DDAPIConstants.APP_KEY, DDAPIConstants.APP_SECRET,

                DDAPIConstants.REDIRECT_URI);

        dd.setDdHttpTools(newHttpsTools());

      // dd.initAccessTokenByPassword(DDAPIConstants.USER_NAME,DDAPIConstants.USER_PASSWORD);

      

        //第一次运行的时候才会用到,后面就不会用到了

//        if(mark){

//           dd.initAccessTokenByCode("jACgLB");

//            Token token = dd.getToken();

//            System.out.println(token.getAccessToken());

//           

//            dd.refreshToken();

//            Token token2 = dd.getToken();

//           //System.out.println(token2.getAccessToken());

//            //存起来

//            db.saveToDb(token2);

//           

//            mark = false;

//        }

//        else{

              Token token3 = db.getLastRow();

                dd.setToken(token3);

              

                System.out.println(token3);

                

              // String[] scope = token3.getScope();

               // System.out.println(scope[0]);

                

                dd.refreshToken();

                

               Token token4 = dd.getToken();

               db.saveToDb(token4);

//    }

 

 


其中DBConn中我写的DB数据库处理类,它无非用了两件事情,第一是保存最新的 Token相关属性,第二件事取出最新的Token相关属性。

5.DBConn类相关方法如下所示:

package com.diandian.api.sdk.java.db;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


import com.diandian.api.sdk.Token;

publicclass DBConn {

     
      publicConnectionconn =null;

 
      /**

       * 在测试类中进行测试

       * @param args

       */

      publicstaticvoidmain(String[] args) {

           //saveToDb();

      }


      publicConnection getConnection(){

           try{

                  Class.forName("com.mysql.jdbc.Driver");

                   conn =DriverManager.getConnection(

                "jdbc:mysql://localhost:3306/policedb?useUnicode=true&characterEncoding=UTF8",

                "root","123");

           }catch(Exceptionevt){

                 evt.printStackTrace();

           }

           returnconn;

      }


      /**

       * 插入至数据库

       * @paramtoken

       */

      publicvoidsaveToDb( Token token) {

           try{     

                 String insertSQL ="insert into token_table(access_token, refresh_token,token_type,expires_in," +

                            "last_update_time,scope) values(?,?,?,?,?,?)";

                

                 PreparedStatement  ps = getConnection().prepareStatement(insertSQL);

              

                 ps.setString(1,token.getAccessToken());

                 ps.setString(2,token.getRefreshToken());

                 ps.setString(3,token.getTokenType());

                 ps.setString(4, String.valueOf(token.getExpiresIn()));

                 ps.setString(5, String.valueOf(token.getLastUpdateTime()));

                

                 String[]  scope = token.getScope();

                 //取数组第一条数据放入数据库中

                 ps.setString(6, scope[0]);

                

                 ps.executeUpdate();

                

           }catch(Exceptionevt){

                 evt.printStackTrace();

           }

      }

     

      /**

       * 取数据库最后一条数据的内容

       */

      public TokengetLastRow(){

           Token token =newToken();

           try{

                 //取数据库最后一条数据的内容  select top 1 ID from [yourtable]order by ID desc

                 String selectSQL ="select * from token_table order by id desc limit 1 ";

                 PreparedStatement  ps =getConnection().prepareStatement(selectSQL);

                 ResultSet resultSet =ps.executeQuery();

                

                 //如果有记录的话

                 if(resultSet.next()){

                     token.setAccessToken(resultSet.getString("access_token"));

                     token.setRefreshToken(resultSet.getString("refresh_token"));

                     token.setExpiresIn(Long.parseLong(resultSet.getString("expires_in")));

                     token.setTokenType(resultSet.getString("token_type"));

                    

                     String firstScope = resultSet.getString("scope");

                     String[] scope =newString[1];

                     scope[0] =firstScope;

                     //组装数组数据

                    

                     token.setScope(scope);

                 }

                

           }catch(Exceptionevt){

                 evt.printStackTrace();

           }

          

           return token;

      }

}

 


6.最后一步就是通过写代码的方式发布图片,文字,链接,语音,视频等信息。

测试代码如下所示:

 

 public void testGet() {

        TagView tagView = newDDClientInvoker(getClient(),newDefaultJsonParser()).getMyTags();


        DDClientInvoker ddClientInvoker = newDDClientInvoker(getClient(),newDefaultJsonParser());

        System.out.println(ddClientInvoker.getUserInfo());


        //发布文字

        //ddClientInvoker.postText("******************","1", "it", "slug", "it的世界", "引导世界潮流!");

       //ddClientInvoker.postText("*******************", "2","it", "slug2", "phone5", "phone5引导世界潮流!");

        //slug为自定义链接地址,不可重复,否则会报错

        //错误如下所示:

        /***  code=400000,msg=你输入的自定义链接地址已被占用,请重新输入  **/

       

        //发布照片

        ddClientInvoker.postPhoto("*******************","1", "it","slug3", "这个一点通过JAVA API 方式上传的图片", "F:\\截图\\background.png");


        //如果操作过快,在它的时间间隔内操作的话,会报如下问题:

        /** [code=400000, msg=操作太快啦,点点有点儿跟不上,稍等稍等一下 :)] **/


        //得到博客名

        //*****.diandian.com 这个是我的名字

       

        System.out.println(tagView.toString());

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值