使用 java Scribe 库更新状态 Twitter(错误空对象指向)



我试图使用java和Scribe库(1.3)更新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.getBody()之前检查response2.getCode(),也许您收到错误(例如 403 - 禁止)并且您忽略了它。

希望对您有所帮助。

好的,我知道了。

我注意到请求在推特上的工作方式在一个月前发生了变化,现在必须使用 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/24https://github.com/juliendangers/pac4j/commit/72d025e219dd11f854ecf1f8156e48f688d55615

感谢eltabo带我走向正确的方向。

相关内容

最新更新