在Dynamics 365 CE中从流创建附件
阅读:33
点赞:1
在某些情况下,我们可能会接收到包含多个部分内容的HTTP响应,其中一个部分是一个流,我们需要从中提取数据,并将其作为PDF文件附加到Dynamics 365 Customer Engagement(CE)中的备注中。以下是如何实现这一过程的示例代码。
一、检查HTTP响应
首先,我们需要检查HTTP响应是否有效,并且状态码表示成功。
if (httReqresponse != null && httReqresponse.IsSuccessStatusCode)
{
// 检查响应是否为空,并且状态码是否表示成功
var multipartContent = await httReqresponse.Content.ReadAsMultipartAsync();
if (multipartContent != null && multipartContent.Contents.Count > 1)
{
// 如果多部分内容存在并且至少有两个部分
HttpContent secondPart = multipartContent.Contents[1];
var streamContent = await secondPart.ReadAsStreamAsync();
byte[] bytesArrary;
using (MemoryStream ms = new MemoryStream())
{
// 将流复制到内存流中
streamContent.CopyTo(ms);
bytesArrary = ms.ToArray();
}
// 创建一个新的备注实体
Entity notes = new Entity("annotation");
// 设置父实体的引用
notes["objectid"] = new EntityReference("<<Parenentitylookupname>>", <<guid>>);
// 设置父实体类型代码
notes["objecttypecode"] = "<<Name of parent entity>>";
// 设置备注的主题
notes["subject"] = "Notes Subject";
// 将字节数组转换为Base64字符串并设置为文档主体
notes["documentbody"] = Convert.ToBase64String(bytesArrary);
// 设置MIME类型
notes["mimetype"] = @"application/pdf";
// 设置文件名
notes["filename"] = "FileName.pdf";
// 创建备注实体
service.Create(notes);
}
}
二、解析多部分内容
一旦我们确认了HTTP响应是有效的,并且包含了多部分的内容,我们可以开始解析这部分内容。在这个例子中,我们关注的是第二个部分,因为它很可能包含了我们要提取的流。
三、创建备注实体
接下来,我们创建一个备注实体,并设置相关的属性。这包括设置备注所属的父实体、备注的主题、文档体(这里是Base64编码的PDF内容)、MIME类型以及文件名。
四、保存到Dynamics 365 CE
最后,我们使用service.Create(notes)
方法将备注实体保存到Dynamics 365 CE系统中。这样,我们就成功地从HTTP响应中的流创建了一个附件,并将其附加到了指定的实体上。
五、注意事项
-
请确保替换代码中的 <<Parenentitylookupname>>
、<<guid>>
和<<Name of parent entity>>
为实际的父实体逻辑名称、GUID以及父实体名称。 -
在实际应用中,可能需要添加错误处理代码来应对可能出现的各种异常情况。