我在 AX 2012 中的作业中使用了休息 Web 服务。
我使用 UTF-8,当我运行作业时,出现错误: "无法创建'CLRObject'",在行中:
dataStream = response.GetResponseStream();
我的代码是:
postData = strfmt('My json');
new InteropPermission(InteropKind::ClrInterop(.assert((;
网址="我的网址";
request = System.Net.WebRequest::Create(url(;
System.Net.ServicePointManager::set_Expect100Continue(false(;
request.set_Method("发布"(;
utf8 = System.Text.Encoding::get_UTF8((;
字节数组 = utf8。GetBytes(postData(;
request.set_ContentType("应用程序/JSON"(;
request.set_ContentLength(byteArray.get_Length(((;
数据流 = 请求。GetRequestStream((;
dataStream.Write(byteArray, 0, byteArray.get_Length(((;
dataStream.Close((; 尝试
{
response = request.GetResponse();
}
捕获(例外::CLRError(
{
后数据 = ";
}
数据流 = 响应。GetResponseStream((;
streamReader = new System.IO.StreamReader(dataStream(;
returnValue = streamReader.ReadToEnd((;
请注意,对于相同的 URL 和帖子数据 (JSON(,我可以在 Postman(( 中获取正确的数据,但我在 AX 中遇到了问题。
我知道我的 Unicode 出了点问题,因为当我测试与上面的代码相同,使用另一个 URL 并为另一个 Web 服务发布数据时,它会导致我的响应,其中所有"&"字符都被替换为 Unicode"\u0026"!!!!
你能帮帮我吗?
伙计们请注意,通过向请求添加超时解决了问题。 我认为它可能对某些人有用。
request.set_timeout(100000);