Android httpclient и UTF-8 - PullRequest
       12

Android httpclient и UTF-8

1 голос
/ 14 февраля 2011

Я пытаюсь подключиться к веб-сервису, где мои запросы хранят некоторые данные.Плохо то, что эти данные содержат символы 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());

Теперь я не получу нелегальный символ, но, похоже, он полностью испортит utfurl, так как вместо этого я получаю:ноль или установить в параметрах ".Возможно, потому что он не распознает "http://" часть в испорченной строке. Любой совет?

С уважением

1 Ответ

7 голосов
/ 14 февраля 2011

Я думаю, вам нужна строка запроса в кодировке URL. Если это так, используйте:

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

Основная идея заключается в том, что вы хотите кодировать только строку запроса, а не имя хоста или протокол.

...