Konsumieren Sie Rastful WebService über Web -Proxy
Frage
Ich versuche, einen erholsamen Webservice in Java zu konsumieren, indem ich die Apache Wink Framework über meinen Schul -Web -Proxy, der Authentifizierung erfordert
ClientConfig clientConfig = new ClientConfig();
clientConfig.proxyHost("proxy.school.com");
clientConfig.proxyPort(3128);
//nothing to set username and password :(
RestClient client = new RestClient(clientConfig);
Resource resource = client.resource("http://vimeo.com/api/v2/artist/videos.xml");
String response = resource.accept("text/plain").get(String.class);
Ich habe auch versucht, das zu benutzen BasicAuthSecurityHandler
Es scheint jedoch verwendet zu werden, sich direkt mit einem Webserver zu authentifizieren, nicht mit dem Web -Proxy
BasicAuthSecurityHandler basicAuthHandler = new BasicAuthSecurityHandler();
basicAuthHandler.setUserName("username");
basicAuthHandler.setPassword("password");
config.handlers(basicAuthHandler);
Es fällt immer noch mit einem HTTP 407 -Fehlercode: Proxy -Authentifizierung erforderlich.
Ich habe das Beste gegoogelt, was ich konnte. Nichts kam besser, um einen Webservice von einem Java -Kunden über einen Web -Proxy zu konsumieren. Wenn jemand eine andere Idee hat, kann man gerne antworten, um zu antworten
Lösung
Ok, das war ziemlich schwer, aber ich habe es gefunden! Ich habe die HTTP -Anfragen angemeldet, die mit meinem Browser mit gestellt wurden Geiger und fand heraus, dass die Proxy-Connection
und Proxy-Authorization
waren das, wonach ich suchte, nachdem ich umfangreiche Dokumentationen gelesen habe wie wie RFC 2616 über http/1.1
Also kopierte ich die Werte, die in meinen Java-Code gesendet wurden:
resource.header("Proxy-Connection", "Keep-Alive");
resource.header("Proxy-Authorization", "Basic encodedString");
wo encodedString
ist das, was von meinem Browser gesendet wird: username:password
Base64 codiert
Und es funktioniert jetzt perfekt :)
Andere Tipps
Dieses Problem wurde als [1] aufgeworfen und seitdem mit einem ProxyauthSecurityHandler gelöst, der Apache Wink -Client -Entwicklern zur Verfügung steht.
[1]: https://issues.apache.org/jira/browse/wink-292 Apache Wink Jira Problem Wink-292