java - 如何将包含特殊字符的数据发布到 Microsoft CRM Dynamics Web API?

标签 java utf-8 odata dynamics-crm

我们正在在线使用 Microsoft CRM Dynamics 的 Web API REST 端点。

我们尝试使用 POST 到以下 URL 创建一个新条目 https://OUR-ORG.crm4.dynamics.com/api/data/v9.0/customentities

当数据包含普通字符时,我们会成功,但一旦文本属性包含像这样的特殊字符

één

请求失败。

所以发送

een 

成功。

我们将“Content-Type” header 设置为“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问题。

最佳答案

感谢@pangiotis kanavos,我仔细研究了java代码。 当然,事实证明,JAVA问题在这里已经有了答案: Java UTF-8 encoding not working 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();

关于java - 如何将包含特殊字符的数据发布到 Microsoft CRM Dynamics Web API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538888/

相关文章:

excel - 自动导出 Facebook Insights 数据

c# - 具有多个 DataContext 的事务

javascript - 使用 XMLHTTPRequest 的 OData 批量请求

java - 如何使用 Junit 模拟 Builder

java - Thymeleaf 迭代对象列表

java - 使用 htmlunit 单击 javascript anchor 似乎不起作用

Java UTF-8 编码问题

mysql - MediaWiki MySQL 数据库字符集,使用哪一个?

java - 为什么垃圾收集启动时 "from"幸存者空间不为空?

c++ - 我在检查字符串时得到 "Invalid utf 8 error",但是当我使用 std::cout 时它似乎是正确的