首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将spring-social配置为通过代理工作

将spring-social配置为通过代理工作
EN

Stack Overflow用户
提问于 2015-01-19 12:16:44
回答 1查看 1.4K关注 0票数 1

我试着用spring社交模块运行应用程序。但当建立与twitter的连接时,我得到了一个例外:

代码语言:javascript
复制
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://api.twitter.com/oauth/request_token": Connection refused; nested exception is java.net.ConnectException: Connection refused

我知道这是因为代理,如果它在没有代理的情况下运行在另一台计算机上,它就能正常工作。声明代理参数的方法,如:

代码语言:javascript
复制
System.setProperty( "http.proxyPort", "8090" );
System.setProperty( "https.proxyPort", "8090" );
System.setProperty( "http.proxyHost", "192.168.1.50" );
System.setProperty( "https.proxyHost", "192.168.1.50" );

或者在开始时传递VM参数:

代码语言:javascript
复制
-Dhttp.proxySet=true -Dhttp.proxyHost=192.168.1.50 -Dhttp.proxyPort=8090 -Dhttps.proxyHost=192.168.1.50 -Dhttps.proxyPort=8090

别工作了。只有当我使用spring-social+spring-boot时,它才会有帮助。据我所知,spring使用代理设置初始化内部RestTemplate (在Twitter.class中)。

实际上的问题是:如果spring引导没有在应用程序中使用,那么如何初始化spring-social来使用代理呢?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 13:18:22

这是一个非常愚蠢的错误,花费了许多小时。可能会对某些人有帮助。要配置spring-社会需要的配置类,如下所示:

代码语言:javascript
复制
@Configuration
@EnableSocial
public class SocialConfig
    extends SocialConfigurerAdapter
{
...
}

有许多方法,其中之一是

代码语言:javascript
复制
@Override
public void addConnectionFactories( ConnectionFactoryConfigurer cfConfig)
{
    TwitterConnectionFactory twitterConnectionFactory = new TwitterConnectionFactory( "twitter.appId", "twitter.appSecret" );
    cfConfig.addConnectionFactory( twitterConnectionFactory );
}

在这个方法中创建TwitterConnectionFactory..。它还包含RestTemplate,它向twitter发送请求。因此,System代理属性的设置应该在工厂创建之前。所以最简单的例子是:

代码语言:javascript
复制
@Override
public void addConnectionFactories( ConnectionFactoryConfigurer cfConfig )
{    
    System.setProperty( "http.proxyPort", "8090" );
    System.setProperty( "https.proxyPort", "8090" );
    System.setProperty( "http.proxyHost", "192.168.1.50" );
    System.setProperty( "https.proxyHost", "192.168.1.50" );
    TwitterConnectionFactory twitterConnectionFactory = new TwitterConnectionFactory( "twitter.appId", "twitter.appSecret" );
    cfConfig.addConnectionFactory( twitterConnectionFactory );
}

不幸的是,我稍后设置了这个属性:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28024489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档