2014-02-26 62 views
5

我在Windows上使用twitter4j-3.0.5。Twitter4j:如何从状态获取twit url?

当新状态到达StatusListener时。 onStatus()方法,我想打印出它的URL,但我没有找到任何适当的方法。状态。 getURLEntities()总是空的,即使我看着传递给客户端的json,也是非常困难的,url字段不是空的,并且包含有效的URL。 我只是不知道如何从java中获得这个值。

请指教。

回答

16

getURLEntities()方法返回推文本身的内容中的任何URL,而不是推文的URL

幸运的鸣叫的URL是采用以下格式:

https://twitter.com/[screen name of user]/status/[id of status]

所以,你可以得到一个状态的URL与此代码:

Status status; 
String url= "https://twitter.com/" + status.getUser().getScreenName() 
    + "/status/" + status.getId(); 
System.out.println(url); 
0

URL可以通过曝光2种方式。

  • 给Twitter的链接

  • 给它啾啾的网站链接。

样品实施例:

package com.twitter.example; 

import java.util.List; 

import twitter4j.Status; 
import twitter4j.Twitter; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 
import twitter4j.URLEntity; 
import twitter4j.conf.ConfigurationBuilder; 

public class TwitterApplication { 
    public static void main(String[] args) throws TwitterException { 
     ConfigurationBuilder cf = new ConfigurationBuilder(); 
     cf.setOAuthConsumerKey("OAUTH_CONSUMER_KEY") 
       .setOAuthConsumerSecret("OAUTH_CONSUMER_KEY_SECRET") 
       .setOAuthAccessToken("OAUTH_ACCESS_TOKEN") 
       .setOAuthAccessTokenSecret("OAUTH_ACCESS_TOKEN_SECRET"); 

     TwitterFactory tf = new TwitterFactory(cf.build()); 
     Twitter twitter = tf.getInstance(); 

     // get username and status 
     List<Status> statusList = twitter.getHomeTimeline(); 

     int i = 0; 
     for (Status status : statusList) { 
      i++; 
      String url = "https://twitter.com/" + status.getUser().getScreenName() + "/status/" + status.getId(); 
      System.out.println("Twitter URL:"+url); 

      URLEntity[] urls = status.getURLEntities(); 
      for(URLEntity urlEntity : urls) { 
       url = urlEntity.getURL(); 
       System.out.println("Website link URL in the tweet: "+url); 
      } 
      if (i == 1) 
       break; 
     } 
    } 
} 

输出:

微URL:在鸣叫https://twitter.com/CulturalGM/status/966308069884952577

网站链接URL:https://websitelink