2014-02-26 5 views
5

Ich verwende twitter4j-3.0.5 unter Windows.Twitter4j: Wie bekomme ich Twit URL vom Status?

Wenn ein neuer Status beim StatusListener eintrifft. onStatus() Methode, ich möchte seine URL ausdrucken, aber ich finde keine geeignete Methode. Status. getURLEntities() ist immer leer, sogar hart, wenn ich auf die JSON an den Client übergeben, das URL-Feld ist nicht leer und enthält gültige URL. Ich weiß einfach nicht, wie man diesen Wert von Java bekommt.

Bitte beraten.

Antwort

16

Die Methode getURLEntities() gibt alle URLs im Inhalt des Tweets selbst zurück, nicht die URL von den Tweet.

Glücklicherweise ist die URL eines Tweet ist in folgendem Format:

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

So können Sie die URL eines Status mit diesem Code erhalten können:

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

URL kann ausgesetzt werden 2 Wege.

  • geben den twitter Link

  • die Website-Link geben, die getwittert wird.

Musterbeispiel:

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; 
     } 
    } 
} 

Ausgang:

Twitter URL: https://twitter.com/CulturalGM/status/966308069884952577

Link zur Website URL in dem Tweet: https://websitelink