微博網路資料擷取及解析的樣本
OAuth auth = new OAuth();
String url = "http://api.t.sina.com.cn/statuses/friends_timeline.json";
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("source",auth.consumerKey));
HttpResponse response = auth.SignRequest(user.getId(), user.getTokenSecret(), url, params);
if(200 == response.getStatusLine().getStatusCode())
{
try{
InputStream is = response.getEntity().getContent();
Reader reader = new BufferedReader(new InputStreamReader(is),4096);
StringBuilder buffer = new StringBuilder((int)response.getEntity().getContentLength());
try{
char[] tmp = new char[1024];
int l;
while((l=reader.read(tmp))!= -1)
{
buffer.append(tmp,0,l);
}
}finally
{
reader.close();
}
String string = buffer.toString();
((org.apache.http.HttpResponse) response).getEntity().consumeContent();
JSONArray data = new JSONArray(string);
for(int i=0; i<data.length();i++)
{
JSONObject d = data.getJSONObject(i);
if(d!=null)
{
JSONObject u = d.getJSONObject("user");
if(d.has("retweeted_status"))
{
JSONObject r = d.getJSONObject("retweeted_status");
}
//微博id
String id=d.getString("id");
String userId=u.getString("id");
String userName=u.getString("screen_name");
String userIcon=u.getString("profile_image_url");
// Log.e("userIcon", userIcon);
String time=d.getString("created_at");
String text=d.getString("text");
Boolean haveImg=false;
if(d.has("thumbnail_pic")){
haveImg=true;
//String thumbnail_pic=d.getString("thumbnail_pic");
//Log.e("thumbnail_pic", thumbnail_pic);
}
Date startDate=new Date(time);
Date nowDate = Calendar.getInstance().getTime();
time=new DateUtilsDef().twoDateDistance(startDate,nowDate);
if(wbList==null){
wbList=new ArrayList<WeiBoInfo>();
}
WeiBoInfo w=new WeiBoInfo();
w.setId(id);
w.setUserId(userId);
w.setUserName(userName);
w.setTime(time +" 前");
w.setText(text);
w.setHaveImage(haveImg);
w.setUserIcon(userIcon);
wbList.add(w);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (JSONException e){
e.printStackTrace();
}
catch (IllegalStateException e)
{
e.printStackTrace();
}
}