Как опубликовать данные в Microsoft CRM Dynamics Web API, которые содержат специальные символы? - PullRequest
0 голосов
/ 27 сентября 2018

Мы используем конечные точки веб-API REST Microsoft CRM Dynamics в режиме онлайн.

Мы пытаемся создать новую запись, используя POST, по следующему URL-адресу https://OUR -ORG.crm4.dynamics.com / api / data / v9.0 / customentities

Мы получаем успех, когда данные содержат нормальные символы, но как только свойство text содержит специальные символы, подобные этому

één

Запрос не выполнен.

Итак, отправка

een 

успешна.

Мы устанавливаем заголовок «Content-Type» в «application / json; charset = UTF»-8 "

---- язык программирования --- Когда мы используем JAVA, он не работает.

URL crmURL = new URL(fullOdataURL);
HttpsURLConnection con = (HttpsURLConnection) crmURL.openConnection();

con.setRequestMethod("POST");

con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Authorization", "Bearer " + accesstoken);
con.setRequestProperty("OData-MaxVersion", "4.0");
con.setRequestProperty("OData-Version", "4.0");

con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(baaslogentryJSON.toString());
wr.flush();
wr.close();

Когда мы используем Postman для воспроизведения запроса, запрос принимается.

Так что это становится вопросом JAVA.

1 Ответ

0 голосов
/ 28 сентября 2018

Благодаря @pangiotis kanavos я более подробно рассмотрел код Java.Конечно, как оказалось, на вопрос JAVA уже есть ответ: Кодировка Java UTF-8 не работает HttpURLConnection

Код ниже работает для меня (он сохранил закомментированную строку здесь, чтобы показать разницу с кодом в вопросе)

con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
writer.write(baaslogentryJSON.toString());
writer.close();
//wr.writeBytes(baaslogentryJSON.toString());
wr.flush();
wr.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...