2013-09-05 3 views
2

Android 프로젝트에서 저는 스프링 안드로이드와 Robospice를 사용하고 있습니다. 어떤 모든 REST 통신에 적합합니다. 그러나 아래의 요청 쿼리 매개 변수 "="는 "&"으로 변환됩니다. 이 때문에 요청이 실패하게됩니다.URL 검색어 매개 변수 문자열 "="이 (가) "&"로 변환됩니다.

쿼리 문자열 : 태그 = [ "키워드 : 기본 = 안녕하세요"] 요청이 라이브러리에 의해 호출을 아래로 변환됩니다 로그를 확인하여

. 여기

http://XXX/rest/media/search?token=123&tags=%5B%22keywords:default&hello%22%5D 

"="기호 "키워드 : 기본 = 안녕하세요"에서 "&"로 변환됩니다

요청 클래스

여기 = 및 String.format ("[\"키워드를 태그 : default = % s \ "]", mTag);

@Override 
public MVMediaSearch loadDataFromNetwork() throws Exception 
{ 
    String search=""; 
    if(!tags.equals(Constants.EMPTY_DATA)) 
    search="&tags="+tags; 
    return getRestTemplate().getForObject(Constants.BASE_URL+"/media/search?token="+token+search, MVMediaSearch.class); 
} 

브라우저에서 URL을 실행하면 오류가 발생합니다. 그리고 '&'기호를 브라우저의 해당 URL 인코딩 값으로 변경하면 올바르게 작동합니다.

+1

당신은 urlBuilder를 사용하려고 노력 해요? – Dyna

+0

내가 시도하지만 URL이 올바르지 않습니다 다음과 같은 방법으로 인코딩 % 255B % 2522keywords % 253Adefault % 253DAdult % 2천5백22퍼센트 255D –

답변

0

당신은 같은 것을 수행 할 수 있습니다

URI uri = new URI(
    "http", 
    Constants.BASE_URL, 
    "/media/search?token=", 
    token, 
    search, 
    null); 
String request = uri.toASCIIString(); 

THIS에서 살펴보고 이해하는지 (당신은 당신의 코드에 적응해야을 -이 완전히 당신을 위해 수행되지 않습니다)

+0

이 java.net.URISyntaxException를 던졌습니다 : 상대 경로 : CiBhZHVsdHN3aW0tdW5pdmVyc2FsLWFuZHJvaWRwaG9uZRIOMjAyLjg4LjIzNy4yMTIY4eKp7o4oIg1BZHVsdFN3aW1Bc2lhKIAEMggKAklOEgIxMzgHOAhAAQ –

+0

당신이 처음에 HTTP를 넣어야 할 (나는 당신의 상수 안에 무엇이 있는지 모른다 .BASE_URL) – Dyna

+0

http : // 이미있다. –

관련 문제