2016-06-30 2 views
3

Java에서 Apache REST 클라이언트를 통해 GET 요청을 보내려고하는데이 문제가 발생했습니다.java.net.URISyntaxException : 인덱스 75에있는 경로의 문자가 잘못되었습니다.

java.net.URISyntaxException : http://torrento.sharepoint.com/_api/web/getfolderbyserverrelativeurl ('/ 공유 문서/테스트')/java.net.URI의 $ Parser.fail에서 파일 (URI.java:2848 : 인덱스 75에서 경로에 잘못된 문자) at java.net.URI $ Parser.checkChars (URI.java:3021) java.net.URI $ Parser.parseHierarchical (URI.java:3105) java.net.URI $ Parser.parse (URI .java : 3053) java.net.URI. (URI.java:588) org.apache.http.client.utils.URIBuilder. (URIBuilder.java:82) com.mstack.samples.sharepoint .SharepointApp.getAllFiles (SharepointApp.java:61) at com.mstack.samples.sharepoint.SharepointApp.main (SharepointApp.java:45)

코드 : -

  httpClient = HttpClientBuilder.create().build(); 
      uriBuilder = new URIBuilder(requestUrl); 
      System.out.println(uriBuilder); 
      httpGet = new HttpGet(uriBuilder.build()); 
      httpGet.addHeader(AUTHORIZATION, "Bearer " + TOKEN); 
      httpGet.addHeader("accept", "application/json; odata=verbose"); 
      response = httpClient.execute(httpGet); 

requestUrl이 http://torrento.sharepoint.com/_api/web/getfolderbyserverrelativeurl('/Shared Documents/test')/files

이다 나는 공간을 알고 공유와 문서 사이의 문제입니다. 그것을 인코딩하려했습니다. 하지만 그것도 효과가 없었습니다. 도와주세요

+0

은 다음과 같습니다 http://stackoverflow.com/a/724764/5655414 당신이 원하지 않는 무엇? – angryip

+0

그에 따라 변경되었으며 다른 문제가 발생했습니다. 이 코드를 변경하려면 어떻게해야합니까? – Sachin

+1

* "인코딩하려고했으나 작동하지 않았습니다."* - 시도한 것을 보여주고 무슨 일이 일어 났는지 보여줍니다. 솔루션은 URL의 '경로'부분을 인코딩하는 것이므로 올바른 방법입니다. –

답변

1

간단히 덧붙여서 해결책을 얻었습니다 requestUrl.replaceAll(" ", "%20"); 하지만 다른 특수 문자의 경우에는 이것만으로는 작동하지 않습니다. 따라서 요청을 보내기 전에 URL을 인코딩해야합니다.

건배 :)

관련 문제