Основная идея заключается в том, что вы хотите кодировать только строку запроса, а не имя хоста или протокол.
аюсь подключиться к веб-сервису, где мои запросы хранят некоторые данные. Плохо то, что эти данные содержат символы 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: //" в испорченной строке. Любой совет?
С уважением