【问题标题】:Updating status Twitter using java Scribe library (Error null object pointing)使用 java Scribe 库更新状态 Twitter(错误空对象指向)
【发布时间】:2014-03-21 11:17:04
【问题描述】:

我正在尝试使用带有 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()”打印。

我无法在您的讨论和外部论坛中找到解决我的问题的正确方法,因此感谢您提供任何帮助。

提前谢谢你!

【问题讨论】:

    标签: java twitter oauth scribe


    【解决方案1】:

    尝试在response2.getBody() 之前检查response2.getCode(),也许您遇到了错误(例如 403 - 禁止)并且您忽略了它。

    希望对你有帮助。

    【讨论】:

    • 是的,如果我使用 .getcode() 显示“403”。这个错误是什么意思?同时我会找到有关它的信息,谢谢。
    • 好吧,你没有被授权访问。检查您的 api 数据。
    • 好吧,我解决了,但我无法发送我写的答案,因为我的声誉很低......我明天会回答。无论如何,感谢 eltabo 的建议,非常感谢。
    【解决方案2】:

    好的,我明白了。

    我注意到 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 带我走向正确的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多