java - 如何使用 post rest call 将大型 pdf 文件附加到 crm 动态电子邮件?
问题描述
只有当我的文件内容少于 100 个字符时,我才能成功发出电子邮件附件的发布请求。对于相同的代码,当我发布像 1Mb 这样的大文件内容时,我得到一个动态错误
public enum Payload {
PAGING_COOKIE("@Microsoft.Dynamics.CRM.fetchxmlpagingcookie"),
CONTEXT("@odata.contex"),
ETAG("@odata.etag"),
ID("@odata.id"),
BIND("@odata.bind"),
VALUE("value"),
COUNT("@odata.count"),
NEXT_LINK("@odata.nextLink"),
NAVIGATION("_"),
ERROR("error"),
MESSAGE("message"),
INNER_ERROR("innererror"),
CODE("code"),
TYPE("type"),
STACK_TRACE("stacktrace");
....
}
@Stateless
public class ActivityMimeAttachmentRepository extends DynamicsRepository {
// Select
private static final String SELECT_GUID = "$select=" + ActivityMimeAttachmentBean.CrmFields.activitymimeattachmentid.name();
@Inject
private ActivityMimeAttachmentBuilder activityMimeAttachmentBuilder;
public void createAttachement(ActivityMimeAttachmentBean attachment) throws DynamicsException {
String url = activityMimeAttachmentBuilder.url(ActivityMimeAttachmentBean.RESOURCE_NAME, null, null, true);
// Construction des propriétés à créer
ArrayList<ActivityMimeAttachmentBean.CrmFields> crmFields = new ArrayList<ActivityMimeAttachmentBean.CrmFields>();
crmFields.add(ActivityMimeAttachmentBean.CrmFields.filename);
crmFields.add(ActivityMimeAttachmentBean.CrmFields.mimetype);
crmFields.add(ActivityMimeAttachmentBean.CrmFields.body);
crmFields.add(ActivityMimeAttachmentBean.CrmFields.subject);
crmFields.add(ActivityMimeAttachmentBean.CrmFields.objectid);
crmFields.add(ActivityMimeAttachmentBean.CrmFields.objecttypecode);
// Construction du payload
String payload = activityMimeAttachmentBuilder.build(false, attachment, crmFields.toArray(new ActivityMimeAttachmentBean.CrmFields[0])).toString();
// Création dans Dynamics CRM
super.create(url, payload, Header.RETURN_REPRESENTATION);
}
}
public JSONObject create(String url, String payload, Header...headers) throws DynamicsException {
WebClient webClient = build(url, false, authenticationService.getToken(false), null, headers);
Response response = webClient.post(payload);
if (401 == response.getStatus()) {
webClient = build(url, false, authenticationService.getToken(true), null, headers);
response = webClient.post(payload);
}
JSONObject entity = build(webClient, "POST", payload, response);
return entity;
}
我得到的错误是:引起:java.lang.Throwable:消息:对象引用未设置为对象的实例。,类型:System.NullReferenceException,stacktrace:在Microsoft.Crm.Extensibility.OData.EdmTypeConverte r。 ConvertToCrmEntity(EdmEntityObject edmEntity, EntityReference entityReference, IEdmModel edmModel) 在 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger 记录器, EventId eventId, ActivityType activityType, Func 1 func, IEnumerable
1 additionalCustomProperties) 在 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult] ](ILogger 记录器,XrmTelemetryActivityType activityType,Func 1 func)
at Microsoft.Crm.Extensibility.OData.CrmODataServiceDataProvider.CreateEdmEntity(CrmODataExecutionContext context, String edmEntityName, EdmEntityObject entityObject, Boolean isUpsert)
at Microsoft.Crm.Extensibility.OData.EntityController.PostEntitySetImplementation(String& entitySetName, EdmEntityObject entityObject)
at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func
1 func,IEnumerable 1 additionalCustomProperties)
at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func
1 func)在 lambda_method(闭包,对象,对象 [])
当我将正文内容减少到少于 100 个字符时,我没有收到此错误,并且文件已附加到电子邮件中。
解决方案
推荐阅读
- php - 如何使 MySQL INTO OUTFILE 输出可按组/每个人写入?
- dpdk - 在 mbuf 中嵌入缓存对齐的元数据
- python - 使用 Python Paramiko 通过双 SSH 隧道连接到数据库
- javascript - Vue apexcharts Y轴标签隐藏在水平条形图中
- r - 计算列的平均值以及下一列中的注释
- salesforce-marketing-cloud - 联系人密钥 v/s 用户密钥
- python - 在不和谐经济系统中未触发使用命令
- html - HTML 作业问题 - Flexbox - 初学者
- swift - 使用 Swift 在 macOS 上围绕光标绘制形状
- python - 使用 python 的 Binance 智能链上的 Web3 ExtraDataLength 错误