2016-03-05 8 views
0

Я написал клиент 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. Как я могу заставить код работать для обеих этих версий?

+1

Попробуйте добавить заголовок '' Accept-Charset''' в ваш запрос POST с его значением, установленным в 'UTF-8'. –

+0

@SteveC, делая это, я получаю это теперь как вывод: 'jennÃfer garcÃa''. STILL Я не возвращаю исходную строку в ответ :(Это код, который я добавил: 'httpPost.setHeader (« Accept-Charset »,« UTF-8 »);' – user5917011

+0

Можете ли вы доказать, что 'inputJSON' находится в UTF -8? –

ответ

Смежные вопросы