2014-02-20 22 views
0

我試圖使用java與Scribe庫更新twitter狀態(1.3)。使用java Scribe庫更新狀態Twitter(錯誤null對象指向)

詢問示例中的預處理資源是否正常工作。 (https://github.com/fernandezpablo85/scribe-java/blob/master/src/test/java/org/scribe/examples/TwitterExample.java

不過,我得到當我嘗試寫一個鳴叫下一個錯誤:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot get String from a null object 
    at org.scribe.utils.Preconditions.check(Preconditions.java:80) 
    at org.scribe.utils.Preconditions.checkNotNull(Preconditions.java:27) 
    at org.scribe.utils.StreamUtils.getStreamContents(StreamUtils.java:20) 
    at org.scribe.model.Response.parseBodyContents(Response.java:41) 
    at org.scribe.model.Response.getBody(Response.java:67) 
    at model.TwitterExample.main(TwitterExample.java:84) 

突出的部分代碼:

OAuthService service = new ServiceBuilder() 
           .provider(TwitterApi.Authenticate.class) 
           .apiKey("------------------------------") 
           .apiSecret("--------------------------------") 
           .build(); 
Scanner in = new Scanner(System.in); 

// Obtain the Request Token 
Token requestToken = service.getRequestToken(); 
Verifier verifier = new Verifier(in.nextLine()); 
// Trade the Request Token and Verfier for the Access Token 
Token accessToken = service.getAccessToken(requestToken, verifier);</java> 

String tweet = URLEncoder.encode("First Tweet","UTF-8"); 
String urlTweet="http://api.twitter.com/1.1/statuses/update.json?status="+tweet; 
System.out.println("request: "+urlTweet); 
OAuthRequest request2 = new OAuthRequest(Verb.POST, urlTweet); 
service.signRequest(accessToken, request2); 
System.out.println("REQUEST: " + request2.getUrl()); 
Response response2 = request2.send(); 
System.out.println(response2.getBody()); 

此異常拋出「response2.getBody() 「打印。

我一直無法在您的討論和外部論壇中找到適合我的問題的解決方案,所以我們非常感謝您的幫助。

預先感謝您!

回答

0

嘗試檢查response2.getCode()之前response2.getBody(),也許你會得到一個錯誤(如403 - 禁止),你會忽略它。

希望它有幫助。

+0

是的,如果我使用.getcode()顯示「403」。 這個錯誤是什麼意思? 我會在這裏找到關於它的信息,謝謝。 – Roy90

+0

那麼,你沒有自動訪問。檢查你的api數據。 – eltabo

+1

奧基,我解決了它,但我不能發送答案我寫了bbecose我的低信譽... 明天我會回答。無論如何,感謝eltabo的建議,非常感謝。 – Roy90

0

好吧,我明白了。

我注意到請求在twitter上工作的方式在一個月前已經改變了,現在必須使用https而不是http。

我確實在我的代碼一些調整,這個問題之前,在參考這個,喜歡用

.provider(TwitterApi.Authenticate.class) 

,而不是

.provider(TwitterApi.class). 

即使這樣,我沒有改變我的代碼的這句話,這是我錯誤的原因。

String urlTweet="http://api.twitter.com/1.1/statuses/update.json?status="+tweet; 

String urlTweet="https://api.twitter.com/1.1/statuses/update.json?status="+tweet; 

我希望,如果有人來這裏同樣的問題,可以與該信息相關的解決它。

https://github.com/leleuj/pac4j/issues/24 https://github.com/juliendangers/pac4j/commit/72d025e219dd11f854ecf1f8156e48f688d55615

感謝eltabo帶我到正確的方向。