編寫調(diào)用新浪微博API的Java程序來發(fā)送微博
首先,需要下載新浪微博的SDK,這里附上地址:http://vdisk.weibo.com/s/z7iFc2gCCwC1b
下載完了之后解壓,然后打開myeclipse,新建項(xiàng)目,再把剛才解壓出來的Import到項(xiàng)目中。如圖所示:

接下來,到這個(gè)網(wǎng)址http://open.weibo.com/注冊應(yīng)用。有三種應(yīng)用,選擇站內(nèi)應(yīng)用,然后創(chuàng)建應(yīng)用。把該填寫的都填寫上。確認(rèn)就ok。需要注意的是有兩點(diǎn):
1,是注冊完應(yīng)用,會有App Key以及App Secret,這個(gè)接下來會用到。
2,到《我的應(yīng)用》,選擇:應(yīng)用信息,
點(diǎn)擊“編輯”,然后注意到有兩個(gè)地址:其中“應(yīng)用實(shí)際地址”要慎重填寫,我的是http://127.0.0.1/callback.jsp,注意地址后面不要有“/”這些。現(xiàn)在,記住這個(gè)地址,接下來要用到。
現(xiàn)在,轉(zhuǎn)向myeclipse,src下,有config.properties文件,編輯它
client_ID就是App key。
client_SERCRET就是App Secret
redirect_URI就是之前著重提到的那個(gè)地址:http://127.0.0.1/callback.jsp
保存。
接下來,我們發(fā)送一條微博:
examples下,weibo4j.examples.oauth2包下:OAuth4Code類,直接運(yùn)行:會出現(xiàn)應(yīng)用授權(quán)頁面,輸入用戶名和密碼之后,就會跳到之前填寫的那個(gè)redirect_URI頁面。如果瀏覽器中保存著微博的信息,則不經(jīng)過這個(gè)頁面而直接跳轉(zhuǎn)到redirect_URI頁面。
在跳轉(zhuǎn)到redirect_URI頁面后,看到URL地址欄里,格式是redirect_URI?code=xxxxxx。下面,復(fù)制code的值,然后進(jìn)入到myeclipse的控制臺輸出那里,看到:
code=https://api.weibo.com/oauth2/authorize?client_id=1458508643&redirect_uri=http://127.0.0.1/callback.jsp&response_type=code Hit enter when it's done.[Enter]:
接下來,粘帖code到[Enter]:后面?;剀?。就會看到一大堆輸出信息。
直接跳到最后,看到access_token,這個(gè)就是我們需要的東西了,記錄下來。
接下來發(fā)送微博:
在weibo4j.examples.timeline包下,UpdateStatus類下/
需要傳遞兩個(gè)參數(shù)進(jìn)去,我就直接寫了進(jìn)去。代碼如下:
packageweibo4j.examples.timeline;
importweibo4j.Timeline;
importweibo4j.Weibo;
importweibo4j.examples.oauth2.Log;
importweibo4j.model.Status;
importweibo4j.model.WeiboException;
publicclassUpdateStatus {
publicstaticvoidmain(String[] args) {
String access_token = "2.00lBvA1CxikhaBfbc0d2a0c10FWttI";
String statuses = "此條微博來自星光發(fā)布系統(tǒng)發(fā)布";
Weibo weibo = newWeibo();
weibo.setToken(access_token);
Timeline tm = newTimeline();
try{
Status status = tm.UpdateStatus(statuses);
Log.logInfo(status.toString());
} catch(WeiboException e) {
e.printStackTrace();
} }
}
package weibo4j.examples.timeline;
import weibo4j.Timeline;
import weibo4j.Weibo;
import weibo4j.examples.oauth2.Log;
import weibo4j.model.Status;
import weibo4j.model.WeiboException;
public class UpdateStatus {
public static void main(String[] args) {
String access_token = "2.00lBvA1CxikhaBfbc0d2a0c10FWttI";
String statuses = "此條微博來自星光發(fā)布系統(tǒng)發(fā)布";
Weibo weibo = new Weibo();
weibo.setToken(access_token);
Timeline tm = new Timeline();
try {
Status status = tm.UpdateStatus(statuses);
Log.logInfo(status.toString());
} catch (WeiboException e) {
e.printStackTrace();
} }
}
statuses就是想要發(fā)表的東西。
到此,就可以發(fā)送微博了。
有問題留言。!
附:
有時(shí)候,比如用另外一個(gè)微博帳號(就是區(qū)別于注冊應(yīng)用的這個(gè)帳號)時(shí),會出現(xiàn)一些錯(cuò)誤。錯(cuò)誤信息:
{"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/statuses/update.json"}
eibo4j.model.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why.
error:applications over the unaudited use restrictions! error_code:21321/2/statuses/update.json
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414)
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372)
at weibo4j.http.HttpClient.post(HttpClient.java:301)
at weibo4j.http.HttpClient.post(HttpClient.java:286)
at weibo4j.Timeline.UpdateStatus(Timeline.java:708)
at weibo4j.examples.timeline.UpdateStatus.main(UpdateStatus.java:18)
{"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/statuses/update.json"}
weibo4j.model.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why.
error:applications over the unaudited use restrictions! error_code:21321/2/statuses/update.json
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414)
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372)
at weibo4j.http.HttpClient.post(HttpClient.java:301)
at weibo4j.http.HttpClient.post(HttpClient.java:286)
at weibo4j.Timeline.UpdateStatus(Timeline.java:708)
at weibo4j.examples.timeline.UpdateStatus.main(UpdateStatus.java:18)
這個(gè)的解決辦法:還是在我的應(yīng)用那里,點(diǎn)擊”應(yīng)用信息“,”測試賬號“,看到有添加測試賬號,這個(gè)時(shí)候,你把想要發(fā)布微博的帳號的用戶昵稱添加進(jìn)去,就OK。
相關(guān)文章
java使用websocket,并且獲取HttpSession 源碼分析(推薦)
這篇文章主要介紹了java使用websocket,并且獲取HttpSession,通過使用配置源碼分析了各方面知識點(diǎn),具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08
Java數(shù)據(jù)結(jié)構(gòu)之散列表(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵字(key value)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)。這篇文章給大家介紹了java數(shù)據(jù)結(jié)構(gòu)之散列表,包括基本概念和散列函數(shù)相關(guān)知識,需要的的朋友參考下吧2017-04-04
簡易版SpringBoot自定義模擬實(shí)現(xiàn)
SpringBoot作為目前最流行的框架之一,極大地提高了開發(fā)效率和降低了學(xué)習(xí)成本,使得開發(fā)人員能夠更專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而無需過多關(guān)注底層框架的配置和集成,本文模擬實(shí)現(xiàn)簡易版SpringBoot2024-01-01
Maven將代碼及依賴打成一個(gè)Jar包的方式詳解(最新推薦)
這篇文章主要介紹了Maven將代碼及依賴打成一個(gè)Jar包的方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05

