我有一个使用twitter4j库访问twitter API的简单代码。当我独立运行时,代码工作正常。但是当我在weblogic服务器上部署相同的代码作为更大的应用程序的一部分时,它开始给我以下错误。
java.net.ConnectException:尝试全部:4个地址,但不能 通过HTTPS连接到服务器:api.twitter.com端口:443
这里的问题是我们需要使用代理服务器来访问互联网。我在连接到twitter API时已经给出了代理,并且它在独立运行时似乎正在工作。但是在weblogic上部署应用程序后也没有发生同样的情况。连接到twitter API的代码在
下面 public static String getTwitterFeed() {
String retVal = "";
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager(){
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(
context.getSocketFactory());
} catch (Exception e) { // should never happen
e.printStackTrace();
}
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey("XXXXXXXXXXXXXXXXXXXXXX").
setOAuthConsumerSecret("XXXXXXXXXXXXXXXXXXXXXXXXXX").
setOAuthAccessToken("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx").
setOAuthAccessTokenSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").
setHttpProxyHost("proxy.com").
setHttpProxyPort(1111);
try {
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
AppModule am = new AppModule();
String tag = am.getTwitterTags();
if(tag == null || tag.length()==0) {
System.out.println("no tag found");
tag = "#rajneesh";
}
Query query = new Query(tag);
query.setCount(5);
QueryResult result;
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
String tweetText = twitterTemplate;
tweetText = tweetText.replaceAll("~author~", tweet.getUser().getScreenName()).replaceAll("~Tweet",tweet.getText()).
replaceAll("~elapsed time~", tweet.getCreatedAt().toString());
retVal = retVal+tweetText;
}
} catch (TwitterException te) {
te.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
String html = "<html><head></head><body>" + retVal+"</body></html>";
// System.out.println(html);
return html;
}