日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java怎么实现同步到微博功能_新浪微博信息站外同步的完整实现

發布時間:2023/12/4 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java怎么实现同步到微博功能_新浪微博信息站外同步的完整实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近遇到一個項目,其中需要將用戶的微博信息與自己的網站項目上同步,好在新浪微博是提供了API的,大概查閱了一下,信息同步需要調用的是

在關于授權機制說明中,新浪微博的API一共有兩種驗證機制,分別是:OAuth和Basic Auth,OAuth沒有細看,不去管他,在Basic Auth授權介紹部分提到了cnblogs上的一篇文章,?http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html,這篇文章給出了在asp.net中如何去以GET方式提交一個http請求,并給出返回內容的代碼,順著這篇文章又找到了另一篇博客園團隊的文章:http://www.cnblogs.com/cmt/archive/2010/05/13/1733904.html,這篇文章實現了站外發送微博的功能。結合這兩篇文章,實現了新浪微博同步的功能。

下面介紹實現微博同步的步驟:

1.首先為了實現http請求,需要引入using System.Net;命名空間,同時后面在轉換字符集部分及取得返回內容部分,需要另外兩個命名空間:using System.Text;和using System.IO;

接下來就可以開始編寫代碼實現取得json數據了。

(1)準備用戶驗證數據

string usernamePassword = username + ":" + password;

username是你的微博登錄用戶名,password是你的博客密碼。

(2)準備API的URL,URL中的參數直接以GET方式附在URL中,剛開始博客園的文章沒有細看,直接貼過來代碼,把參數附加在data中,總是返回400錯誤,后來查了一下msdn,發現HttpWebRequest的默認請求方式就是GET,再者既然是GET方式,應該就是以URL來傳遞參數的。

string url = "https://api.weibo.com/2/statuses/user_timeline.json?source="+apikey+"&count="+count+"";

上面的apikey是做為新浪微博用戶的開發者申請的,應該是唯一的,博客園的文章中說需要發一封郵件審核,我沒有發郵件,直接申請,也得到了一個APIKEY,信息也可以同步,只不過當在站外發送微博信息時,在來源部分會是:未審核應用。后面還有uid和screen_name 等參數,具體的參數API文檔都有說明。

(3)組織代碼實現HttpWebRequest請求

WebRequest webRequest = System.Net.WebRequest.Create(url);

HttpWebRequest myReq = webRequest as System.Net.HttpWebRequest;

CredentialCache mycache = new CredentialCache();

mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));

myReq.Credentials = mycache;

//驗證用戶授權機制

myReq.Headers.Add("Authorization", "Basic" + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));

(4)取得返回內容,其中用到了Stream類。

WebResponse wr = myReq.GetResponse();

Stream receiveStream = wr.GetResponseStream();

StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);

string content = reader.ReadToEnd();

上面的content即為取得的微博信息的json格式的內容,到此為止,已經實現了如何獲得微博內容的功能。接下來的部分就是如何格式化json內容,以相應的形式顯示在網頁中。

2.在asp.net中格式化json數據。

取得json數據后,到網上搜了一下,大多都是介紹如何在javascript中去以鍵值形式讀取的,本人對javascript比較畏懼。其中有兩篇文章是以類的形式實現了如何在asp.net中讀取json數據,沒有去實踐。后來在一篇文章中發現Jayrock.Json,使用起來比較簡單,同時有一篇word的使用說明文檔。下面的代碼實現是基于Jayrock.Json實現的。Jayrock.Json中基本是以JsonArray和JsonObject的轉換來實現以鍵值方式讀取json數據,我是將取得的數據放入DataTable中,后來想想這樣也有好處,前臺的UI可以隨意設計,最終綁定到DataTabel即可。

下面是格式化Json數據并實現DataTable的代碼。

JsonReader jsonRead = new JsonTextReader(new StringReader(content));

JsonObject jsonobj = new JsonObject();

jsonobj.Import(jsonRead);

JsonArray wiboArr = jsonobj["statuses"] as JsonArray;

DataTable wibo = new DataTable();

wibo.Columns.Add("id", typeof(Int64));

wibo.Columns.Add("screen_name", typeof(string));

wibo.Columns.Add("profile_image_url", typeof(string));

wibo.Columns.Add("text", typeof(string));

wibo.Columns.Add("source", typeof(string));

wibo.Columns.Add("created_at", typeof(DateTime));

foreach (JsonObject wibolist in wiboArr)

{

DataRow dr = wibo.NewRow();

dr["id"] = Convert.ToInt64(wibolist["id"]);

JsonObject user = wibolist["user"] as JsonObject;

dr["screen_name"] = user["screen_name"].ToString();

dr["profile_image_url"] = user["profile_image_url"].ToString();

dr["text"] = wibolist["text"].ToString();

dr["source"] = wibolist["source"].ToString();

dr["created_at"] = DateTime.ParseExact(wibolist["created_at"].ToString(), "ddd MMM dd HH:mm:ss K yyyy", new System.Globalization.CultureInfo("en-GB"));

wibo.Rows.Add(dr);

}

通過上面的兩大步驟,實現了取得微博信息,并將其放入DataTable中的功能。

后記:新浪微博的創建時間格式是:Tue May 31 17:46:55 +0800 2011,網上也沒找到相關資料,開始的時候是自己專門編寫了兩個函數用來解析這個時間字符串,后來csdn上的一個朋友dalmeeme以一行代碼的形式(DateTime自帶的一個方法)就實現了,在此一并感謝!

總結

以上是生活随笔為你收集整理的java怎么实现同步到微博功能_新浪微博信息站外同步的完整实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。