配置 spring-social 通过代理工作
Configure spring-social to work via proxy
我尝试 运行 带有 spring-社交模块的应用。但是当应该建立与 twitter 的连接时,我得到了一个例外:
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
我知道这是因为代理,如果它 运行 在另一台没有代理的计算机上它工作正常。声明代理参数的方法如:
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 参数:
-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-boot 有一些用于使用代理设置初始化内部 RestTemplate
(在 Twitter.class
中)的东西。
实际问题:如果spring boot 没有在应用程序中使用,如何初始化spring-social 以使用代理?谢谢
这是一个非常愚蠢的错误,花了很多时间。可能对某人有帮助。要配置 spring-社交需要配置 class 喜欢:
@Configuration
@EnableSocial
public class SocialConfig
extends SocialConfigurerAdapter
{
...
}
有多种方法,其中一种是
@Override
public void addConnectionFactories( ConnectionFactoryConfigurer cfConfig)
{
TwitterConnectionFactory twitterConnectionFactory = new TwitterConnectionFactory( "twitter.appId", "twitter.appSecret" );
cfConfig.addConnectionFactory( twitterConnectionFactory );
}
在此方法中创建 TwitterConnectionFactory... 并且它包含 RestTemplate
,它向 Twitter 发送请求。所以 System
代理属性的设置应该在工厂创建之前。所以最简单的情况是:
@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 );
}
不幸的是,我稍后设置了这个属性:(
我尝试 运行 带有 spring-社交模块的应用。但是当应该建立与 twitter 的连接时,我得到了一个例外:
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
我知道这是因为代理,如果它 运行 在另一台没有代理的计算机上它工作正常。声明代理参数的方法如:
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 参数:
-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-boot 有一些用于使用代理设置初始化内部 RestTemplate
(在 Twitter.class
中)的东西。
实际问题:如果spring boot 没有在应用程序中使用,如何初始化spring-social 以使用代理?谢谢
这是一个非常愚蠢的错误,花了很多时间。可能对某人有帮助。要配置 spring-社交需要配置 class 喜欢:
@Configuration
@EnableSocial
public class SocialConfig
extends SocialConfigurerAdapter
{
...
}
有多种方法,其中一种是
@Override
public void addConnectionFactories( ConnectionFactoryConfigurer cfConfig)
{
TwitterConnectionFactory twitterConnectionFactory = new TwitterConnectionFactory( "twitter.appId", "twitter.appSecret" );
cfConfig.addConnectionFactory( twitterConnectionFactory );
}
在此方法中创建 TwitterConnectionFactory... 并且它包含 RestTemplate
,它向 Twitter 发送请求。所以 System
代理属性的设置应该在工厂创建之前。所以最简单的情况是:
@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 );
}
不幸的是,我稍后设置了这个属性:(