簡體   English   中英

使用Java Scribe庫更新狀態Twitter(錯誤指向空對象)

[英]Updating status Twitter using java Scribe library (Error null object pointing)

我正在嘗試使用帶有Scribe庫(1.3)的Java更新Twitter狀態。

如示例中所示,請求受保護的資源效果很好。 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()”打印。

我無法在您的討論和外部論壇中找到解決我的問題的正確解決方案,因此能提供任何幫助。

先感謝您!

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

希望能幫助到你。

好,我知道了。

我注意到,在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將我帶向正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM