2013-09-02 2 views
1

기본 브라우저에서 링크를 열려고합니다. 다음 코드를 사용했습니다.URISyntaxException 쿼리에 잘못된 문자가 있음

String myUrl = "http://www.example.com/engine/myProcessor.jsp?Type=A Type&Name=1100110&Char=!"; 

     try { 
      Desktop.getDesktop().browse(new URI(myUrl)); 
     } catch (IOException err) { 
      setTxtOutput("Error: "+err.getMessage()); 
     } catch (URISyntaxException err) {  
      setTxtOutput("Error: "+err.getMessage()); 
     } catch (Exception err) { 
      setTxtOutput("Error: "+err.getMessage()); 
     } 

나는 인덱스

에서 쿼리에 URISyntaxException 불법 문자를 얻고 나는이 때문에 같은 같은 문자의 생각?, &! 내 URL에 나는 다음과 같이 사용하려고 시도했다 :

URLEncoder.encode(myUrl, "UTF-8"); 

그러나 이것은 다른 오류를 준다.

Failed to open http%3A%2F%2Fwww.example.com%2F........... 
The system cannot find the file specified. 

당신은 어떻게 URISyntaxException 불법 문자 오류를 수정하는 방법 말해 줄 수주십시오.

답변

0

그것 때문에 여기에 공백 ...jsp?Type=A Type&...의, 당신은과 URL에 +

http://www.example.com/engine/myProcessor.jsp?Type=A+Type&Name=1100110&Char=!" 
+0

예! 나는 공간을 % 20으로 바꿨고 지금은 작동합니다! 감사. –

2

URI 클래스에 유효한 프로토콜이 필요하기 때문에 전체 URL을 인코딩하면 안됩니다. 인코딩 매개 변수 만

myUrl = "http://www.example.com/engine/myProcessor.jsp?" + URLEncoder.encode("Type=A Type&Name=1100110&Char=!", "UTF-8"); 
+0

실제로 변수 이름과 구분 기호가 아닌 값입니다. & separator는 URL을 넣는 위치 (HTML 또는 XML)에 따라 추가로 인코딩해야 할 수도 있습니다. 위의 경우 문제는 공백 문자가 발생합니다. – Caleryn

+0

@Caleryn Right. 이것이 첫 번째'URISyntaxException'의 문제점입니다. 두 번째로는 전체 URL을 인코딩하려고합니다. –

0

교체 공백을 대체 할 수 + URL이 포함되어있는 경우 같은 카테고리 = 성인 케어는 다음으로 대체 category = 성인 + 관리.

관련 문제