2014-04-28 1 views
0

glassfish 3.2.1에서 HTTP 500 내부 서버 오류가 발생하고 ledgerAccountNumber로 URL에 % 기호를 추가했습니다.% 기호가있는 편안한 서비스를 호출하는 동안 glassfish 내부 오류가 발생했습니다.

Sample url - https://domain:8181/services/generalLedgerAccountConfig/isLedgerAccountNumberInUse/200%?_=1398694030799 

RESTful 서비스 :

@Path("/generalLedgerAccountConfig") 
    public class ConfigGeneralLedgerAccount { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("isLedgerAccountNumberInUse/{ledgerAccountNumber}") 
    public Response isLedgerAccountNumberInUse(@PathParam("ledgerAccountNumber") String ledgerAccountNumber) { 
    ... 
    } 
} 

500 HTTP 오류가 발생하는 이유 어떤 아이디어?

+0

URL을 인코딩하십시오. '%'는 URL 인코딩 된'% 25'입니다. 로그 파일은 무엇입니까? –

+0

backbone.js에서 URL을 인코딩하는 방법은 무엇입니까? var isLedgerAccountNumberInUse; $ 아약스 ({ 유형 : 'GET', URL :의 contextPath + "/ 서비스/generalLedgerAccountConfig/isLedgerAccountNumberInUse /"+ 값, 의 contentType : '응용 프로그램/JSON', dataType와 'JSON', 비동기 : 사실 , 캐시 : 거짓 성공 : 함수 (대응) {(! isLedgerAccountNumberInUse) isLedgerAccountNumberInUse = 응답 복귀 콜백; }}); – Judrius

+0

모름 - 나는 백본을 사용하지 않고있다. 그러나'%'를'% 25'으로 대체하는 것이 무엇입니까? –

답변

0

%는 (는) URI 경로에서 유효한 문자가 아닙니다. 이는 안전하지 않은 문자에 대한 ASCII 코드의 시작을 나타내며 경로에 '%'가있을 때마다 두 자리가 따라 와야합니다. 여기에 "?"가옵니다.

리터럴 %를 서버에 보내려면 "% 25"(으)로 이스케이프 처리해야합니다. 따라서 클라이언트가 URL을 올바르게 인코딩하지 못합니다. 클라이언트가 무엇이든, 사용자로부터 입력을 받으면 불법 문자를 없애거나 합법적 인 문자를 이스케이프 처리하기 위해 해당 URL을 올바르게 인코딩해야합니다.

http://www.w3schools.com/tags/ref_urlencode.asp

관련 문제