2017-08-02 2 views
0

私はcurlコマンドを持っていますが、残りのAPIを呼び出すときにuserNameとpasswordでこの情報を渡したいと思います。RestTemplate認証時にuserNameとpasswordを設定する

curl -u E-BOARD:HVRid992Xl740NnWOkjk -X GET --header 'Accept: application/json' 'https://XXXXXX.fr/AAAAAA/BBBBB/v1/details?abc=hsdfh&zyx=asdfsdf 

私のREST APIは、あなたが基本的な認証資格情報を送信しようとしているように私には思えるこの

String url = new StringBuilder(urlConfigService.getProfiles().getBaseUrl()).append(relativeUrl).toString(); 
    **String hiddenAccess = "ASHGHGHJ:HVRid992Xl740NnWOkjk";** 

    // @formatter:off 
    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) 
      .queryParam("refEboard", refEboard) 
      .queryParam("idLangue", "FR"); 
    // @formatter:on 

    HttpHeaders requestHeaders = new HttpHeaders(); 
    requestHeaders.setContentType(MediaType.APPLICATION_JSON); 
    requestHeaders.add("Authorization", hiddenAccess); 
    HttpEntity<?> httpEntity = new HttpEntity<String>(requestHeaders); 
    restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); 
    String result = 
     restTemplate.exchange(builder.build().toUri(), HttpMethod.GET, httpEntity, String.class).getBody(); 
    return (T) new Gson().fromJson(result, type.getClass()); 

答えて

0

ようになります。

基本:あなたはこのようなユーザ名とパスワードをBase64にして設定されたリクエストヘッダエンコードする必要があり、このためには(ユーザー名:パスワードBase64でエンコードすること)

これは、あなたがそれを行う方法です。

RestTemplate restTemplate = new RestTemplate(); 
HttpHeaders header = new HttpHeaders(); 
String auth = username + ":" + password; 
byte [] authentication = auth.getBytes(); 
byte[] base64Authentication = Base64Utils.encode(authentication); 
String baseCredential = new String(base64Authentication); 
header.add(HttpHeaders.AUTHORIZATION, "Basic " + baseCredential); 
      header.setAccept(Collections.singletonList(MediaType.TEXT_PLAIN)); 

HttpEntity<String> request = new HttpEntity<String>(header); 
restTemplate.exchange(builder.build().toUri(), HttpMethod.GET, request, String.class); 
関連する問題