Po përpiqem të riprodhoj komandën e mëposhtme curl duke përdorur Java:
curl -v -u user:pass http://myapp.com/api
Kjo komandë kthen disa të dhëna JSON.
Implementimi im me buggy Java është si më poshtë:
@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;
}
Megjithatë, kur unë ekzekutoj testin, ai kthen një përjashtim org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
.
Kur regjistrohem në DEBUG
, nuk shoh asnjë informacion në lidhje me vërtetimin...
Çfarë po bëj gabim gjatë vendosjes së kredencialeve të vërtetimit?