Package com.yym.sina.weibo

Source Code of com.yym.sina.weibo.WeiboServiceImpl

package com.yym.sina.weibo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.cib.yym.homepage.bean.WeiboPost;
import com.cib.yym.homepage.common.CacheManager;
import com.cib.yym.homepage.common.CacheManagerFactory;

public class WeiboServiceImpl implements WeiboService {
 
  public static final String myUid = "2470763803";
  private static final Logger log = Logger.getLogger(WeiboServiceImpl.class.getName());
 
  /**
   * http://open.weibo.com/wiki/2/statuses/user_timeline
   *
   * @param uid
   * @return
   */
  public List<WeiboPost> getRecentUserPost(String uid)
  {
    String serviceUrl = "https://api.weibo.com/2/statuses/user_timeline.json";
   
    String accessToken = null;
    try {
      CacheManager cache = CacheManagerFactory.getCacheManager();
      if(cache.getCachedData(CacheManager.MAP_WEIBO_CONFIG, "accessToken") != null)
      {
        accessToken = (String)cache.getCachedData(CacheManager.MAP_WEIBO_CONFIG, "accessToken");
        log.info("cache hit accessToken="+accessToken);
      }else
            {
              //TODO redirect to weibo login page
        //throw an exception
        log.info("no accessToken in cache,please redirect to weibo login page");
           
        } catch (Exception e) {
          e.printStackTrace();
        }
   
    String jsonResult = "";
    URL url;
    try {
      serviceUrl = serviceUrl + "?access_token=" + accessToken
              +"&"+"uid=" + uid
              +"&"+"count=" + "10";
      //serviceUrl = "http://localhost:8080/yym-homepage/test/weibo.json";
      url = new URL(serviceUrl);
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
          //connection.setDoOutput(true);
          connection.setDoInput(true);
          connection.setUseCaches(false);
          connection.setRequestMethod("GET");
          connection.connect();
         
            
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
         
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                // OK
               String line;
                 while ((line = reader.readLine()) != null) {                 
                   jsonResult = jsonResult + line;
                 }
                 reader.close();
                
                 log.info("jsonResult="+jsonResult);
            } else {
                // Server returned HTTP error code.             
              log.info("error http code:"+connection.getResponseCode());
            }            
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (ProtocolException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
   
    List<WeiboPost> result = new ArrayList();   
   
    try {     
      JSONObject jsonObj = new JSONObject(jsonResult);
      JSONArray array = jsonObj.getJSONArray("statuses");
      for(int i=0;i<array.length();i++)
      {
        WeiboPost p = new WeiboPost();
        JSONObject tmp = array.getJSONObject(i);
        p.setCreatedAt(tmp.optString("created_at"));
        p.setId(tmp.optString("id"));
        p.setContent(tmp.optString("text"));
        p.setOAuthUID(uid);
        p.setUrl(tmp.optString("source"));
       
        //TODO retweeted_status 是原帖
        if( !tmp.isNull("retweeted_status"))
        {
          JSONObject retweeted_status = tmp.getJSONObject("retweeted_status");
          if(retweeted_status!=null)
          {
            WeiboPost retweeted = new WeiboPost();
            retweeted.setId(retweeted_status.optString("id"));
           
            retweeted.setContent(retweeted_status.optString("text"));
            JSONObject originalUser = retweeted_status.getJSONObject("user");
            if(originalUser!=null)
            {
              retweeted.setOAuthUID(originalUser.optString("id"));
              retweeted.setScreenName(originalUser.optString("screen_name"));
            }
            p.setRetweeted(retweeted);
          }
        }
        result.add(p);
      }
     
    } catch (JSONException e) {     
      e.printStackTrace();
   
    log.info("result size = "+result.size());
    return result;
  }
}
TOP

Related Classes of com.yym.sina.weibo.WeiboServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.