GenerateAuthenticationHeader () не работает в CRM 2013?

1

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

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

Я искал много источников. Один сайт говорит, что использует 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;

}
Теги:
dynamics-crm
dynamics-crm-2011
dynamics-crm-2013

1 ответ

3
Лучший ответ

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

Нет необходимости иметь эту функцию больше, потому что конечная точка 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";

Учить больше

  • 0
    Знаете ли вы, как я могу переписать код выше, используя конечную точку OData?
  • 0
    @Ruruboy Просьба посмотреть мое обновление
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню