Basic-Authentifizierung mit RestTemplate (3.1)
Ich bin versucht zu reproduzieren der folgenden curl-Befehl mit Java:
curl -v -u user:pass http://myapp.com/api
Dieser Befehl gibt einige JSON-Daten.
Meine fehlerhafte Java-Implementierung ist wie folgt:
@Test
public void callTest() {
RestTemplate restTemplate = createRestTemplate("user", "pass");
URI uri = new URI("http://myapp.com/api");
String res = restTemplate.getForObject(uri, String.class);
}
private static RestTemplate createRestTemplate(String username, String password) {
UsernamePasswordCredentials cred = new UsernamePasswordCredentials(username, password);
BasicCredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(AuthScope.ANY, cred);
DefaultHttpClient client = new DefaultHttpClient();
client.setCredentialsProvider(cp);
ClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(client);
RestTemplate restTemplate = new RestTemplate(factory);
//set the media types properly
return restTemplate;
}
Doch, wenn ich den test auszuführen, gibt es eine org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
Ausnahme.
Beim einloggen DEBUG
sehe ich keine Informationen über die Authentifizierung...
Was mache ich falsch bei der Einstellung der Anmeldeinformationen für die Authentifizierung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Instanziierung mit
existiert nicht mehr und Klasse
DefaultHttpClient
ist veraltet von HttpComponents HttpClient von version 4.3. So andere Antworten sind entweder ungültig oder veraltet. Hier ist meine version, die ich schrieb dieser Klasse für rest-Anforderungen, die eine basic-Authentifizierung benötigen:Dann verwenden, wie zum Beispiel:
Ich so etwas tun - und es hat für mich gearbeitet:
Er hier benutzt wird: Referenz Code
Diese Antwort basiert auf der von @kevinpeterson, aber mit ein rewrite für die Verwendung der aktualisierten Apache-HTTP-Client.
httpclient v4.0 nicht Unterstützt Präemptives Authentifizierung
Diesen Look :
http://forum.springsource.org/showthread.php?123385-Preemptive-Basic-Authentication-with-RestTemplate
In der Quelle fand diese Lösung.
Es funktioniert für mich.
Look : RestTemplate mit Basic-Auth in Spring 3.1