【发布时间】:2019-03-03 11:32:17
【问题描述】:
我们在线使用 Microsoft CRM Dynamics 的 Web API REST 端点。
我们尝试使用 POST 到以下 URL 创建一个新条目 https://OUR-ORG.crm4.dynamics.com/api/data/v9.0/customentities
当数据包含普通字符时我们会成功,但只要文本属性包含这样的特殊字符
éé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 问题。
【问题讨论】:
-
Unicode 中没有特殊字符。 .NET 和 Windows 在内部使用 Unicode,因此它们是否可以处理 UTF8 是毫无疑问的。请发布您的代码,您使用的查询,实际错误。您没有提供任何相关信息,甚至没有提供您使用的语言
-
将内容类型设置为
application/json; charset=UTF-8如果您的代码 发送编码为ASCII 的数据并破坏非ANSI 字符,将无济于事。使用 Fiddler 或其他调试代理检查实际发送到 HTTP 服务的内容。我怀疑您会看到请求正文已被破坏
标签: java utf-8 odata dynamics-crm