我尝试使用带有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()”print。
我无法在您的讨论和外部论坛中找到解决问题的正确方法,因此感谢任何帮助。
提前谢谢!
答案 0 :(得分:0)
尝试在response2.getCode()
之前检查response2.getBody()
,也许您收到错误(例如403 - 禁止)并且您忽略它。
希望它有所帮助。
答案 1 :(得分: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带我走向正确的方向。