Я написал клиент REST для этой конечной точки:HttpResponse со специальными символами
textmap.com/ethnicity_api/api
Однако, при этом передавая ему строку имени, как jennífer garcía
в Params POST, и настройка кодировки в UTF-8, то ответ, что Я получаю не одну строку. Как получить то же имя в объекте ответа? Ниже, как я установил запрос и ответ thatI получить:
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(baseurl);
StringEntity input = new StringEntity(inputJSON, StandardCharsets.UTF_8);
input.setContentType("application/json");
//input.setContentType("application/json; charset=UTF-8");
httpPost.setEntity(input);
response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
output = org.apache.commons.io.IOUtils.toString(br);
System.out.println(output);
Значение имени в выходе: jenn�fer garc�a
Это совершенно другая кодировка от того, что я послал в запросе. Как я могу получить тот же набор символов, который был отправлен в запрос?
Во-вторых, я хочу, чтобы тот же код работал как на Java-6, так и на Java-7. В приведенном выше коде используется только Java-7. Как я могу заставить код работать для обеих этих версий?
Попробуйте добавить заголовок '' Accept-Charset''' в ваш запрос POST с его значением, установленным в 'UTF-8'. –
@SteveC, делая это, я получаю это теперь как вывод: 'jennÃfer garcÃa''. STILL Я не возвращаю исходную строку в ответ :(Это код, который я добавил: 'httpPost.setHeader (« Accept-Charset »,« UTF-8 »);' – user5917011
Можете ли вы доказать, что 'inputJSON' находится в UTF -8? –