Nano Hash - криптовалюты, майнинг, программирование

Apache HttpClient — отправить запрос в ETools.ch с символами utf-8 в запросе

Код отлично работает, если запрос не содержит символов utf-8. Как только есть один символ utf-8, ETools дает результаты, которых я не ожидаю. Например, для "trees" я получаю правильный результат, а для "bäume" (немецкое слово для деревьев) я получаю странные результаты. Похоже, что ETools получает запрос как "b%C3%A4ume" и ищет именно этот запрос именно с этими символами, а не с "bäume". Я думаю, что проблема может быть решена, если я задам некоторые параметры заголовка, но я не знаю, какие параметры там возможны.

String query = "some+query+with+utf8+chars";

HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost();

List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("query", query));
parameters.add(new BasicNameValuePair("country", "web"));
parameters.add(new BasicNameValuePair("language", "all"));
parameters.add(new BasicNameValuePair("dataSourceResults", String.valueOf(40)));
parameters.add(new BasicNameValuePair("pageResults", String.valueOf(40)));
request.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
request.setURI("http://www.etools.ch/searchAdvancedSubmit.do?page=2");

MyResponse myResponse = client.execute(request, myResponseHandler);

request.reset();
client.getConnectionManager().shutdown();

Ответы:


1

Вы должны добавить свою кодировку как минимум в Content-Type (по умолчанию latin1):

request.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

Если это не работает, это может быть ошибка сервера. Вы можете попробовать отправить форму как multipart/form-data (RFC 2388) вместо закодированного URL . Уже есть ответ StackOverflow с примером, который вы можете использовать.

05.03.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..