まあ、Spring RestTemplateはURLに基本認証を保持していないようです。だから私は、URLの資格情報がある場合、それは考慮に入れて作るために、URLの呼び出しの前にいくつかのコードを追加:
final String urlWs = "https://user:[email protected]";
final HttpHeaders headers = new HttpHeaders();
final String pattern = "^(?<protocol>.+?//)(?<username>.+?):(?<password>.+?)@(?<address>.+)$";
final Pattern regExpPattern = Pattern.compile(pattern);
final Matcher matcher = regExpPattern.matcher(urlWs);
if(matcher.find()) {
final String username = matcher.group("username");
final String password = matcher.group("password");
final String plainCreds = username + ":" + password;
final byte[] plainCredsBytes = plainCreds.getBytes();
final byte[] base64CredsBytes = Base64Utils.encode(plainCredsBytes);
final String base64Creds = new String(base64CredsBytes);
headers.add("Authorization", "Basic " + base64Creds);
}
final HttpEntity<String> request = new HttpEntity<String>(headers);
final RestTemplate restTemplate = new RestTemplate();
final ResponseEntity<String> wsCalendarResponse = restTemplate.exchange(urlWs, HttpMethod.GET, request, String.class);
これは何の資格情報がない場合でも、正常に動作しています。
回答が役に立ちましたか?なぜなら、RestTemplateと認証では、Apacheクライアントがすぐに解決しないヒッチがほとんどないからです。 –