我在Windows上使用twitter4j-3.0.5。
当新状态到达StatusListener。onStatus()方法时,我想打印出它的URL,但我找不到任何合适的方法。状态。getURLEntities()总是空的,如果我查看传递给客户端的json,即使很难,但url字段不是空的并且包含有效的URL。 我只是不知道如何从java中获取这个值。
请告知。
答案 0 :(得分:19)
getURLEntities()
方法会返回推文内容中的所有网址,而不会返回推文的网址。
幸运的是,推文的网址格式如下:
https://twitter.com/[screen name of user]/status/[id of status]
因此,您可以使用以下代码获取状态的网址:
Status status;
String url= "https://twitter.com/" + status.getUser().getScreenName()
+ "/status/" + status.getId();
System.out.println(url);
答案 1 :(得分:0)
可以通过两种方式公开网址。
提供推特链接
提供推文的网站链接。
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;
}
}
}
Twitter网址:https://twitter.com/CulturalGM/status/966308069884952577
推文中的网站链接网址:https://websitelink