相关疑难解决方法(0)

使用RestTemplate进行基本身份验证(3.1)

我试图使用Java重现以下curl命令:

curl -v -u user:pass http://myapp.com/api
Run Code Online (Sandbox Code Playgroud)

此命令返回一些JSON数据.

我的错误Java实现如下:

@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;
}
Run Code Online (Sandbox Code Playgroud)

然而,当我执行测试时,它返回一个org.springframework.web.client.HttpClientErrorException: 401 Unauthorized异常. …

java spring-mvc basic-authentication resttemplate apache-httpclient-4.x

7
推荐指数
2
解决办法
2万
查看次数