2011-02-14 2 views
1

내 쿼리가 일부 데이터를 보유하고있는 웹 서비스에 연결하려고합니다. 나쁜 점은이 데이터에 utf-8 charcters가 포함되어있어 문제가 발생한다는 것입니다.android httpclient 및 utf-8

단순히 일반 문자열로 HttpGet을 호출하면 "잘못된 문자"예외가 발생합니다. 그래서 나는 인터넷 검색을하고 utf-8 마법을 시도했다.

  HttpClient httpclient = new DefaultHttpClient(); 
     httpclient.getParams().setParameter("http.protocol.content-charset", "UTF-8"); 
     String utfurl = URLEncoder.encode(url, "utf-8"); 
     HttpGet httpGet = new HttpGet(utfurl); 
     HttpResponse response = httpclient.execute(httpGet); 
     content = response.getEntity().getContent(); 
      } catch (Exception e) { 
       Log.d(TAG, "getInputStream: " +e.getMessage()); 

는 지금은 불법의 charcter을받지 않습니다,하지만 대신에 "대상 호스트가 null 또는 매개 변수를 설정해서는 안"얻을 이후 완전히 utfurl UPP 엉망 보인다. 아마도 그가 엉망인 문자열에서 "http : //"부분을 인식하지 못했기 때문일 것입니다. 조언이 있으십니까?

감사합니다.

+0

UTF-8 인코딩 된 문자 (이상하게 들릴지도 모릅니다) 또는 웹 서버에서 반환 한 내용을 포함해야합니까 * URL *입니까? –

+0

나는 jon에 동의하며 현재 접근법은':'와'/'문자를 인코딩 할 것이고 당신의 URL을 깨뜨리고있다. –

+0

URL은 urf-8 charcters를 포함 할 필요가 있습니다. 웹 서비스를 호출하고 쿼리 문자열에 데이터를 저장합니다. 나에게 묻는다면 좋지는 않지만 그것이 완료된 방법입니다. 그리고 예, 나는 알아 차 렸습니다 :/징후가 손상되었습니다. – elwis

답변

7

URL 인코딩 된 쿼리 문자열이 필요하다고 생각합니다. 그렇다면 다음을 사용하십시오.

String query = "?param=value"; 
String host = "http://my.host.name.com/"; 
String encodedUrl = host + UrlEncoder.encode(query,"utf-8"); 

기본 개념은 호스트 이름이나 프로토콜이 아닌 쿼리 문자열 만 인코딩하려는 것입니다.