Я столкнулся с проблемой, заключающейся в том, что, когда я публикую сообщение json со специальным символом из Java-программы, этот специальный символ (скажем, в O'Reilly) заменяется на?. Если я отправлю такое же сообщение от POSTMAN, я получу правильный ответ. Не могли бы вы предложить, как решить эту проблему?
Спасибо.
Ниже приведены код и json, который я использую:
{"lastName": "O'Reilly "," firstName ":" Shaun "}
package rest_apis;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class IDQ_tranformation_cd {
public static void main(String args[]){
String json_req="{"lastName":"O’Reilly","firstName":"Shaun"}";
try{
CloseableHttpClient httpclient = HttpClients.createDefault();
String instanceUrl = "https://my-end-point";
URIBuilder builder = new URIBuilder(instanceUrl);
StringEntity params =new StringEntity(json_req);
HttpPost post_data = new HttpPost(builder.build());
post_data.addHeader("Content-Type","application/json");
post_data.addHeader("Accept", "application/json");
post_data.setEntity(params);
HttpResponse queryResponse = httpclient.execute(post_data);
int Out_RespCd = queryResponse.getStatusLine().getStatusCode();
HttpEntity httpEntity = queryResponse.getEntity();
System.out.println(Out_RespCd +":"+EntityUtils.toString(httpEntity));
} catch (Exception e) {
System.out.println("Exception :"+e.toString());
}
}
}
Я ожидаю правильного вывода как (я могу получить это, когда использую почтальона):
{"lastName":"O’Reilly","firstName":"Shaun"}
Но я получаю это, когда использую код Java ('заменен на?)
{"lastName":"O?Reilly","firstName":"Shaun"}