2017-12-05 3 views
0

나머지 템플릿을 사용하여 쿼리 매개 변수를 전달하여 하나의 get 메서드 API를 호출하려고합니다. 올바른 형식으로 만 요청을 전달하지만 오류 메시지가 "400 null"로 표시됩니다.나머지 템플릿을 사용하여 쿼리 매개 변수가있는 get 메서드 API를 호출 할 때 오류 메시지로 400을 가져 오는 중

POSTMAN 제대로 작동하고 curl 명령 다음과 같은 : 무기명 eyJhbGciOiJIUzI1NiIsImtpZCI6ImxlZ2FjeS10b2tlbi1rZXkiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiJlMmEwYzgwN2M4ZDQ0YzhiYTE1ZmUwNGJmZjFmNzNlYyIsInN1YiI6IjBkZTZlZDhkLWU1OGMtNGExNC1iNTdmLWM5Mjk2Y2JlYjM3NSIsInNjb3BlIjpbImFwaXMucmVhZCIsIm9wZW5pZCIsImFwaXMud3JpdGUiLCJ1YWEuYWRtaW4iLCJzY2ltLndyaXRlIiwic2NpbS5yZWFkIiwidWFhLnVzZXIiXSwiY2xpZW50X2lkIjoiY2xpZW50IiwiY2lkIjoiY2xpZW50IiwiYXpwIjoiY2xpZW50IiwiZ3JhbnRfdHlwZSI6ImF1dGhvcml6YXRpb25fY29kZSIsInVzZXJfaWQiOiIwZGU2ZWQ4ZC1lNThjLTRhMTQtYjU3Zi1jOTI5NmNiZWIzN :

컬 -X GET 'http://localhost:8086/uaa/Groups?filter=identity_zone_id%20eq%20%22uaa%22'\ -H '인증 \ zUiLCJvcmlnaW4iOiJ1YWEiLCJ1c2VyX25hbWUiOiJtYXJpc3NhIiwiZW1haWwiOiJtYXJpc3NhQHRlc3Qub3JnIiwiYXV0aF90aW1lIjoxNTEyNDU1NzU4LCJyZXZfc2lnIjoiMWE5MzYzNWYiLCJpYXQiOjE1MTI0NTU3NTksImV4cCI6MTUxMjQ5ODk1OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3VhYS9vYXV0aC90b2tlbiIsInppZCI6InVhYSIsImF1ZCI6WyJzY2ltIiwiYXBpcyIsInVhYSIsIm9wZW5pZCIsImNsaWVudCJdfQ.LbVu7inr5htyOHPyoN_KzIyFRZZiiiCV4xZHTCJZR30 '

같은 형식은 내가 나머지 템플릿을 통해 요청을 전달하고있다. 다음은 내가 노력하고 코드입니다 :

공공 문자열 listGroup (문자열 accessToken) {

String transactionUrl = "http://localhost:8086/uaa/Groups"; 

HttpHeaders 헤더 = 새로운 HttpHeaders을();

headers.set("Authorization", "Bearer "+accessToken); 
     HttpEntity<String> entity = new HttpEntity<String>(headers); 

    UriComponentsBuilder builder = UriComponentsBuilder 
     .fromUriString(transactionUrl) 
     // Add query parameter 
     .queryParam("filter", "identity_zone_id+eq+%22uaa%22"); 


    RestTemplate restTemplate = new RestTemplate(); 
    //String response = restTemplate.getForObject(builder.toUriString(), String.class); 
    System.out.println("URL===="+builder.toUriString()); 
    try { 
     String param= URLDecoder.decode("filter=identity_zone_id%2Beq%2B%2522uaa%2522", "UTF-8"); 
     System.out.println("param=="+param+"\n"); 

     String decodedURL = URLDecoder.decode(builder.toUriString(), "UTF-8"); 
     System.out.println("decodedURL=="+decodedURL+"\n"); 
     System.out.println("----------------------------------------------------"); 

     System.out.println(URLDecoder.decode(builder.toUriString(), "UTF-8")); 
     System.out.println("entity=="+entity); 

    //String decodedURL = java.net.URLDecoder.decode(builder.toUriString(), "UTF-8"); 

    ResponseEntity<String> response = 
      restTemplate.exchange(decodedURL, 
            HttpMethod.GET, entity, String.class, param); 
    return "Success-"+response; 
    } catch (UnsupportedEncodingException ex) { 
     ex.printStackTrace(); 
    } 

    return "error"; 
} 

누구든지이 문제를 해결할 수 있도록 도와 줄 수 있습니까?

감사 & 감사합니다,

Shilpa Kulkarni

답변

0

대신의 URIComponentsBuilder

String transactionUrl = "http://localhost/uaa/Groups"; 
UriComponentsBuilder builder = UriComponentsBuilder 
     .fromUriString(transactionUrl) 
     .port(8086) 
     // Add query parameter 
     .queryParam("filter", "identity_zone_id+eq+%22uaa%22"); 
를 사용하여 전달하는 URL에서 포트를 언급
관련 문제