zoukankan      html  css  js  c++  java
  • Android MaoZhuaWeiBo 好友动态信息列表数据抓取 -3

    前面2篇把大致的开发说的几乎相同了,接下来说说粉丝动态消息列表或时间线数据的抓取与解析显示,我将他所有写在了一个

    类里。并以封装类对象的形式存储数据。以下看看基本的服务代码:


    粉丝动态消息列表数据抓取:

    package com.neweriweibo.service;
    /**
     * 用户消息列表
     * @author Engineer-Jsp
     * @date 2014.10.29
     * */
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    
    import com.neweriweibo.model.UserWeibo;
    import com.neweriweibo.utils.TencentAPI;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.preference.PreferenceManager;
    import android.util.Log;
    public class WeiBoService extends Service {
    	
        private ArrayList<UserWeibo> data ;
    	private String access_token;
    	private String openid;
    	private String openkey;
    	private String getURL; 
    	@Override
    	public IBinder onBind(Intent intent) {
    		return null;
    	}
    	@Override
    	public void onCreate() {
    		// TODO Auto-generated method stub
    		super.onCreate();
    		data = new ArrayList<UserWeibo>() ;
    		// 首选项取数据
    		access_token = PreferenceManager.getDefaultSharedPreferences(this).getString("access_token", "access_token");
    		openid = PreferenceManager.getDefaultSharedPreferences(this).getString("openid", "openid");
    		openkey = PreferenceManager.getDefaultSharedPreferences(this).getString("openkey", "openkey");
    		// 拼接地址,赋值变量
    		StringBuffer buff = new StringBuffer(TencentAPI.userWeiBo) ;
    		buff.append("?

    ").append("format=json").append("&pageflag=0") .append("&reqnum=5").append("&lastid=0").append("&type=3") .append("&contenttype=0x80").append("&oauth_consumer_key="+TencentAPI.client_id) .append("&access_token="+access_token) .append("&openid="+openid) .append("&clientip=CLIENTIP") .append("&oauth_version=2.a&scope=all"); getURL = buff.toString(); Log.d("获取微博消息列表地址:", getURL); new Thread(new Runnable() { @Override public void run() { /* * http://open.t.qq.com/api/statuses/broadcast_timeline * ?format=json * &pageflag=0 * &pagetime=0 * &reqnum=5 * &lastid=0 * &type=3 * &contenttype=0x80 * &oauth_consumer_key=801506473 * &access_token=789a7d5284d0c3e608f8e384c993d04b * &openid=0027BC08DB5B45D7461E9A0F16F527E7 * &clientip=CLIENTIP * &oauth_version=2.a&scope=all * * */ try { getData(getURL) ; } catch (Exception e) { e.printStackTrace(); } } }).start() ; } public void getData(String path)throws Exception{ UserWeibo userweibo = null ; URL _url = new URL(path); HttpURLConnection conn = (HttpURLConnection) _url.openConnection(); conn.setConnectTimeout(8000); conn.setReadTimeout(8000); conn.setDoOutput(false); conn.setRequestMethod("GET"); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream in = conn.getInputStream(); InputStreamReader reader = new InputStreamReader(in, "utf-8"); BufferedReader buffere = new BufferedReader(reader); StringBuilder builder = new StringBuilder(); String line = null; while (null != (line = buffere.readLine())) { builder.append(line); } String json = builder.toString() ; JSONObject root = new JSONObject(json).getJSONObject("data") ; Log.d("获取到的微博消息列表:", root.toString()); String totalnum = root.getString("totalnum") ; //获取条数 JSONArray arrayinfo = root.getJSONArray("info"); Log.d("详细消息内容数据:", arrayinfo.toString()); //获取广播的条数 for(int i=0 ;i<arrayinfo.length() ;i++){ userweibo = new UserWeibo() ; JSONObject object = arrayinfo.getJSONObject(i) ; String date = object.getString("timestamp") ; //获取一个长整型的时间 :1003323 String from = object.getString("from") ; //获取平台 String location = object.getString("location") ; //获取地址 String name = object.getString("cfloat656805") ; //获取名称 String origtext = object.getString("origtext") ; //获取内容 userweibo.setForm(from) ; userweibo.setLocation(location) ; userweibo.setOrigtext(origtext) ; } } } @Override public void onDestroy() { super.onDestroy(); } }


    UserWeiBO:

    package com.neweriweibo.model;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    /**
     * 用户个人的微博
     * @author Engineer-Jsp
     * @date 2014.10.28
     *
     */
    public class UserWeibo  implements Parcelable{
    	
    	
    	private String form ;   //从哪里发送的消息
    	private String location ;  // 地址
    	private String name ;  //名字
    	private String origtext ;   //发送微博的信息
    	private String timestamp ;  // 发表的时间
    	private String number ;  //  广播的条数
    	
    
    	
    	public UserWeibo() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	public UserWeibo(String form, String location, String name,
    			String origtext, String timestamp,String number ) {
    		super();
    		this.form = form;
    		this.location = location;
    		this.name = name;
    		this.origtext = origtext;
    		this.timestamp = timestamp;
    		this.number = number ;
    		
    	}
    	
    	
    	
    	public String getNumber() {
    		return number;
    	}
    	public void setNumber(String number) {
    		this.number = number;
    	}
    	public String getForm() {
    		return form;
    	}
    	public void setForm(String form) {
    		this.form = form;
    	}
    	public String getLocation() {
    		return location;
    	}
    	public void setLocation(String location) {
    		this.location = location;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getOrigtext() {
    		return origtext;
    	}
    	public void setOrigtext(String origtext) {
    		this.origtext = origtext;
    	}
    	public String getTimestamp() {
    		return timestamp;
    	}
    	public void setTimestamp(String timestamp) {
    		this.timestamp = timestamp;
    	}
    	
    	
    	public static final Parcelable.Creator<UserWeibo> CREATOR = new Parcelable.Creator<UserWeibo>() {
    
    		@Override
    		public UserWeibo createFromParcel(Parcel source) {
    			// TODO Auto-generated method stub
    			UserWeibo userweibo = new UserWeibo() ;
    			userweibo.form = source.readString() ;
    			userweibo.location = source.readString() ;
    			userweibo.name = source.readString() ;
    			userweibo.origtext = source.readString() ;
    			userweibo.timestamp = source.readString() ;
    			userweibo.number = source.readString() ;
    			
    			return userweibo;
    		}
    
    		@Override
    		public UserWeibo[] newArray(int size) {
    			// TODO Auto-generated method stub
    			return new UserWeibo[size];
    		}
    	};
    	
    	
    	
    	@Override
    	public int describeContents() {
    		// TODO Auto-generated method stub
    		return 0;
    	}
    	@Override
    	public void writeToParcel(Parcel dest, int flags) {
    		// TODO Auto-generated method stub
    		
    		dest.writeString(form);
    		dest.writeString(location);
    		dest.writeString(name);
    		dest.writeString(origtext);
    		dest.writeString(timestamp);
    		dest.writeString(number) ;
    		
    	}
    	
    
    	
    	
    	  
    
    }
    

    UserWeiBoInfo:

    package com.neweriweibo.model;
    /**
     * 接收个人微博信息 
     * @author Engineer-Jsp
     * @date 2014.10.28
     */
    import android.os.Parcel;
    import android.os.Parcelable;
    public class UserWeiBiInfo  implements Parcelable{
    	
    	 private String  id ;  //微博id
    	 private String  name ;  //微博人的名字
    	 private String  origtext ;  //发送的信息
    	 private String  headimg;//头像
    
    	public String getHeadimg() {
    		return headimg;
    	}
    	public void setHeadimg(String headimg) {
    		this.headimg = headimg;
    	}
    	public UserWeiBiInfo() {
    		super();
    	}
    	public UserWeiBiInfo(String id, String name, String origtext,String headimg) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.origtext = origtext;
    		this.headimg = headimg;
    	}
    	
    	
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getOrigtext() {
    		return origtext;
    	}
    	
    	
    	public void setOrigtext(String origtext) {
    		this.origtext = origtext;
    	}
    	@Override
    	public int describeContents() {
    		return 0;
    	}
    	@Override
    	public void writeToParcel(Parcel dest, int flags) {
    		
    		dest.writeString(id);
    		dest.writeString(name);
    		dest.writeString(origtext);
    		dest.writeString(headimg);		
    	}
    	
    	 public static final Parcelable.Creator<UserWeiBiInfo> CREATOR = new Creator<UserWeiBiInfo>() {
    
    		@Override
    		public UserWeiBiInfo createFromParcel(Parcel source) {
    			UserWeiBiInfo userWeiBiInfo = new UserWeiBiInfo() ;
    			
    			userWeiBiInfo.id = source.readString() ;
    			userWeiBiInfo.name = source.readString() ;
    			userWeiBiInfo.origtext = source.readString() ;
    			userWeiBiInfo.headimg = source.readString();
    			
    			return userWeiBiInfo;
    		}
    
    		@Override
    		public UserWeiBiInfo[] newArray(int size) {
    			return new UserWeiBiInfo[size];
    		}
    	};
    	
    	@Override
    	public String toString() {
    		return "UserWeiBiInfo [帐号=" + id + ", 昵称=" + name + ", 微博消息="
    				+ origtext + ",头像地址="+headimg+"]";
    	}
    }
    

    界面效果:



    标题菜单:



    转发、赞、评论功能都没有拓展。有兴趣的能够继续做下去,跟着API写就是了,不难~~

  • 相关阅读:
    linux软件安装方式
    docker 安装 jenkins touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    [ERR] Node goodsleep.vip:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
    redis 安装 集群 主从 哨兵 docker
    WPF密码框中禁止复制、粘贴
    Application 统计在线人数
    【转义字符】HTML 字符实体&lt; &gt: &amp;等
    SQL语句统计每天的数据
    正则表达式计算代码数
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7070698.html
Copyright © 2011-2022 走看看