Как прикрепить большой файл PDF к электронному письму с динамикой crm с помощью пост-звонка? - PullRequest
0 голосов
/ 20 мая 2019

Я могу успешно отправить запрос на вложение в сообщение электронной почты только в том случае, если мой файл содержит менее 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: message: Ссылка на объект не установлена ​​наэкземпляр объекта., тип: System.NullReferenceException, stacktrace: at в Microsoft.Crm.Extensibility.OData.EdmTypeConverte r.ConvertToCrmEntity (EdmEntityObject edmEntity, EntityReference entityReference, IEdmModel edmModelmeger.Exm.ExEx.Exchange.Exception).] (Регистратор ILogger, EventId eventId, ActivityType ActivityType, Func 1 func, IEnumerable 1 AdditionalCustomProperties) в Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute [TResult] (ILogger logger, XrmTelemetry *ctivityType ActivityType ActivityType ActivityType ActivityType Activity5ypefunc) at lambda_method (Closure, Object, Object [])

Когда я уменьшаю содержание тела до менее чем 100 символов, я не получаю эту ошибку, и файл прикрепляется к электронному письму.

...