我正在尝试使用adal4j库连接azure for java.But我必须通过代理连接。以下是代码片段
String url = "https://login.microsoftonline.com/tenant_id/oauth2/authorize";
authContext = new AuthenticationContext(url,false,
service);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxyhostname", 443));
authContext.setProxy(proxy);
ClientCredential clientCred = new ClientCredential(XXXX, xxxx);
Future<AuthenticationResult> future = authContext.acquireToken(
clientCred,
null);
authResult = future.get();
我也试过
System.setProperty("http.proxyPort", "80");
System.setProperty("http.proxyUser", "xxxx");
System.setProperty("http.proxyPassword", "xxxx");
System.setProperty("http.proxyHost", "xxxxxxx");
我一直得到以下错误
the error is.....java.net.ConnectException: Connection timed out: connect
java.util.concurrent.ExecutionException: java.net.ConnectException: Connection timed out: connect
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at com.toyota.eap.auth.Test.main(Test.java:76)
Caused by: java.net.ConnectException: Connection timed out: connect
注意:仅当我们在办公室内有代理时才会出现此错误。从办公室外面如果我运行这个程序没有问题。
对此有任何想法。
由于
答案 0 :(得分:1)
在使用Adal4j和Proxy时,已有线程可以回答java.net.ConnectException: Connection timed out
的问题。请查看ADAL for Java Proxy和Java proxy issues - Connection Timed Out以及How do I make HttpURLConnection use a proxy?。
有关详细信息,您可以使用课程setConnectTimeout
的{{1}}功能(请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html)进行解决,请参阅下面的图片和代码:
URLConnection
同时,根据我的经验,如果代理IP和端口位于承诺网络环境中,您可以在本地环境中使用它,但在Azure上失败。从这个角度来看,我认为你应该首先确认代理是有效的on-promise和Azure。
如果连接可以连接并且需要很长时间,那么将连接超时属性设置为上面的引用是很有用的。