GenerateAuthenticationHeader () не работает в CRM 2013? - PullRequest
0 голосов
/ 23 октября 2018

Мы обновляем CRM 2011 до CRM 2013. Инструмент проверки пользовательских кодов помечал метод: GenerateAuthenticationHeader().

Вопрос в том, чем бы я заменил этот метод, чтобы он работал в CRM 2013. Поскольку он дает мне «неопределенное» при запуске.

Я посмотрел много источников.Один сайт говорит, что использует SDK REST, но он не дает соответствующей информации.

Если вы любезно дадите мне знать, как я могу заменить метод GenerateAuthenticationHeader(), мы будем очень признательны.

Код приведен ниже:

function GetAttributeValueFromID(sEntityName, sGUID, sAttributeName, isTextField)
{

var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + GenerateAuthenticationHeader() +
"  <soap:Body>" +
"    <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
"      <Request xsi:type=\"RetrieveRequest\" ReturnDynamicEntities=\"false\">" +
"        <Target xsi:type=\"TargetRetrieveDynamic\">" +
"          <EntityName>" + sEntityName + "</EntityName>" +
"          <EntityId>" + sGUID + "</EntityId>" +
"        </Target>" +
"        <ColumnSet xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:ColumnSet\">" +
"          <q1:Attributes>" +
"            <q1:Attribute>" + sAttributeName + "</q1:Attribute>" +
"          </q1:Attributes>" +
"        </ColumnSet>" +
"      </Request>" +
"    </Execute>" +
"  </soap:Body>" +
"</soap:Envelope>" + "";

var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);

xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");

xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

xmlHttpRequest.setRequestHeader("Content-Length", xml.length);

xmlHttpRequest.send(xml);

var result = null;

if (isTextField)
{
    result = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName).text;

}
else
{

    result = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName).getAttribute('name');

}
if (result == null)
{
    return '';
}
else
    return result;

}

1 Ответ

0 голосов
/ 23 октября 2018

GenerateAuthenticationHeader() устарела в 2013 году.Вы должны переписать свой код, используя конечную точку OData (FYI - эта конечная точка также устарела в Dynamics 365 v9 после REST Web API)

Эта функция больше не требуется, поскольку конечная точка 2007 больше не доступна,Для получения информации вам нужно будет использовать конечные точки Organization.svc или OrganizationData.svc.Проверьте следующую статью - http://msdn.microsoft.com/en-us/library/gg490659.aspx

Ссылка

Каждая из этих веб-служб может использовать проверку подлинности, предоставляемую приложением Microsoft Dynamics 365 в сетиресурсы без необходимости включать какой-либо код для реализации аутентификации.

Обновление:

Загрузка и импорт CRM REST Builder - это управляемое решение, которое может бытьимпортируется и используется в CRM для построения / тестирования запросов.

Ниже приведен пример URI запроса, вы можете его параметризовать.

var oDataURI = Xrm.Page.context.getClientUrl()
       + "/XRMServices/2011/OrganizationData.svc/"
       + "AccountSet(guid'" + accountId + "')"
       + "?$select="
       + "Address1_PostalCode";

Подробнее

...