2012-04-18 1 views
2

얻을. 서버는 JSON 형식으로 응답합니다. 내 응용 프로그램에 ä과 같은 움라우트를 입력하는 경우를 제외하고는 모두 잘 작동합니다. 다음에서"잘못된 문자" <p></p> 나는 웹 서버로부터 데이터를 요청하는 응용 프로그램을 쓰기 ... 이중 인코딩 나는이 지금 전체 저녁 해결책을 찾기 위해 노력하고

I는 요청 URL이 http://example.com/?q= 가정 나는 "야거"

올바른 호출은 다음이 될 것입니다 시간 ++ 페이지를 찾고 있어요 : //example.com/ Q = J의 %의 C3의 % A4ger (죄송 플러스 징후하지만 스팸 차단 나를 제대로 게시 할 수 나던을 위해.)

그래서 내 문제는 지금 :

내 URL 문자열 인코딩하거나 이상 인코딩되지 않은 줄

HttpGet 항상 발생합니다 이중 인코딩 URL에

내 서버에 대한 요청은 http://example.com/?q=J%25C3%25A4ger (백분율 기호를 인코딩 함) 이며 이는 데이터베이스에서 J % C3 % A4ger를 검색하는 서버로 연결됩니다.

내 질문에 어떻게 사용자가 "Jäger"를 입력하면 내 앱이 올바르게 인코딩 된 URL을 호출 할 수 있습니까?

도움 주셔서 감사합니다.

다음은 현재 사용되는 코드 ... 내가 가진 사단 아마 최악의 아이디어입니다 ...

URI url = new URI("http", "//example.com/?q=" + ((EditText)findViewById(R.id.input)).getText().toString(), null); 
Log.v("MyLogTag", "API Request: " + url); 
HttpGet httpGetRequest = new HttpGet(url); 

// Execute the request in the client 
HttpResponse httpResponse; 
httpResponse = defaultClient.execute(httpGetRequest); 
+1

일부 코드를 게시하십시오. –

+0

@ Philipp-Reichard 여기 있습니다. 내일 시도하십시오. –

답변

1

업데이트 : 죄송합니다, HttpParams이 요청 매개 변수에 대한 의미하지만 에 대한HttpClient을 구성하지 않습니다.

안드로이드에

, 당신은 this other SO answer에서 제안처럼, Uri.Builder을 사용할 수 있습니다 :

Uri uri = new Uri.Builder() 
    .scheme("http") 
    .authority("example.com") 
    .path("someservlet") 
    .appendQueryParameter("param1", foo) 
    .appendQueryParameter("param2", bar) 
    .build(); 

HttpGet request = new HttpGet(uri.toString()); 

// This looks very tempting but does NOT set request parameters 
// but just HttpClient configuration parameters: 
// HttpParams params = new BasicHttpParams(); 
// params.setParameter("q", query); 
// request.setParams(params); 

HttpResponse response = defaultClient.execute(request); 
String json = EntityUtils.toString(response.getEntity()); 

안드로이드의 외부, 가장 좋은 건 (모든 인코딩의 번거 로움과) 수동으로 쿼리 문자열을 구축하거나 유사한 무언가를 찾는 것입니다 안드로이드의 Uri.Builder.


+0

아. 그것의 오전 1시 여기에 약 6 시간 안에 일하러 가야합니다 –

+0

같은, 내일 다시 확인하겠습니다 :) –

+0

예상대로 작동하지 않아 미안합니다 ... 위의 코드를 참조하십시오! –