2013-06-21 3 views
0

저는 Java에 익숙하지 않아 문자열을 암호화/해독하는 유틸리티 API를 작성하려고합니다. 컨트롤러와 요청 매핑이 작동하며 암호화/해독 메소드가 작동합니다.Java 웹 API에서 인코딩을 사용하는 URL 라우팅

내가 겪고있는 문제는 슬래시 ('/')가 포함 된 문자열의 암호를 해독하는 것입니다. URL에 인코딩되지 않은 상태로두면 (예 : http://localhost:8080/api/package/util/decrypt/oJfTtchpM9WC/4Oqpu7FZQ==) URL 라우팅이 끊어집니다 (이는 분명한 이유입니다).

URL을 인코딩하면 (예 : http://localhost:8080/api/package/util/decrypt/oJfTtchpM9WC%2F4Oqpu7FZQ==) 경로 변수의 값이 비어 있습니다.

또한 http://localhost:8080/api/package/util/decrypt/oJfTtchpM9WC (슬래시 없음)이 올바르게 작동합니다.

경로 변수에 '%'를 입력 할 때마다 응답 할 때 빈 페이지가 나타납니다. 방법을 치지 마. (내가 찾을 수 - 다시, 나는 아직도 환경 배우고) 예외가 발생하지 않습니다 내가 경로 변수가 data

@RequestMapping(value = "/util/decrypt/{data}", method = RequestMethod.GET) 
@ResponseBody 
public String decrypt(HttpServletResponse httpResponse, 
     @PathVariable String data) throws Exception 
{ 
    return data; 
    // return URLDecoder.decode(data, "UTF-8"); 
} 

수로 표시에만 출력에 내 해독 방법을 단순화했습니다

을 아무도 내게 무슨 일이 일어나고 어떻게이 일을 할 수 있겠는가?

많은 감사합니다.

+0

은 매개 변수 데이터가 null입니까? – shazinltc

+0

컨트롤러에서 decrypt 메소드를 실행하는 것조차 보이지 않습니다. – earthling

+1

당신은 요청 매개 변수를 사용하여 일반적인 요청 매개 변수 즉,? data = yourEncryptedString – shazinltc

답변

0

encodeBase64URLSafeString (대 막 encodeBase64String 대) 기능을 사용하도록 암호화 방법을 업데이트했으며 데이터를 표준 요청 매개 변수 (예 :? data = string)로 전달하도록 변경했습니다. 이로 인해 문제가 제거되었습니다.

URL 안전 변형 URL 을 사용하여 2 진 데이터를 인코딩하지만 출력을 청크하지 않습니다. URL 안전 변형은 + 및/문자 대신 - 및 _ 을 표시합니다. 참고 : 패딩이 추가되지 않습니다.