How can I use a proxy connection within the ArcGIS Runtime Java SDK?
I'm trying to access a ArcGISMapImageLayer(http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer) over a webproxy, which requires a basic authentication with username and password. I figured out 2 possibilities, but neither the configuration over the java.net.ProxySelector properties like http.proxyHost/http.proxyPort nor the RequestConfiguration.setProxyInfo("webproxy.sbb.ch", 8080, "http") worked as I expected.
I implemented my own AuthenticationChallengeHandler and registered it over the static method
AuthenticationManager.setAuthenticationChallengeHandler(..)
, which is never invoked.
When I set
RequestConfiguration.setProxyInfo("webproxy.sbb.ch", 8080, "https")
then the AuthenticationChallengeHandler is invoked, but instead of the expected USER_CREDENTIAL_CHALLENGE a SELF_SIGNED_CHALLENGE AuthenticationChallenge is delivered.
The following SSLException had been occured :
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710) at sun.security.ssl.InputRecord.read(InputRecord.java:527) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) at com.esri.arcgisruntime.internal.httpclient.conn.b.e.a(SourceFile:394) at com.esri.arcgisruntime.internal.httpclient.conn.b.e.a(SourceFile:353) at com.esri.arcgisruntime.internal.httpclient.impl.c.e.a(SourceFile:141)
So obviously arcgis establishes a SSL connection to the proxy. Does the AuthenticationChallengeHandler only works with SSL connections or is it a bug?
Hi,
I'm using Quarz with JavaFX and I want to access the ESRI map server over a proxy which requires an authentication.
WIth the ProxySelector properties (e.g http.proxyHost) I could make the SDK using the proxy. But how I can define the authentication's credentials like username and password? The java.net.Authenticator did not work. The method getPasswordAuthentication() is never called.
Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { System.out.println("Authentication for " + getRequestingURL()); if (getRequestorType() == RequestorType.PROXY && "myproxy.intranet.com".equalsIgnoreCase(getRequestingURL().toString())) { System.out.println("getPasswordAuthentication() for " + getRequestingURL()); return new PasswordAuthentication( "userId", "password".toCharArray()); } return null; } });
I'm not shure how to become access to the RequestConfiguration class.
I don't use ArcGIS android. I use (or try to use) ArcGIS it with Java FX. Your link redirect me to this url "http://android:8080/docs/api/java/doc/api-doc/arcgis-java/reference/com/esri/arcgisruntime/io/RequestConfiguration.html#setProxyInfo(java.lang.String, int)" which I can't open because the host "android:8080" not exist and I'm not hosting anything like that here on my computer.
I don't think it really matters where in your code you put it.
Why do you ask? Are you experiencing unexpected results?
Just let us know. Thanks
Thank you for your answer. I already found this class and my next problem is: how and where can / should I implement the setProxyInfo method to add proxy informations?
For 100.0, have a look at the static method setProxyInfo on the RequestConfiguration class.
Let us know if this helps.
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.