我想使用纯 Javascript 从 MS Dynamics CRM Online 2011 添加/检索数据。我已经搜索了一整天,但只能找到使用 Dynamics SDK、C#、VB 或 JScript 来执行此操作。
有没有办法在纯javascript中做到这一点?我只需要找到一个网络服务来发送/获取数据,但找不到它。有没有这样的网络服务或api存在???请帮助我完全糊涂了!!!谢谢。
我想使用纯 Javascript 从 MS Dynamics CRM Online 2011 添加/检索数据。我已经搜索了一整天,但只能找到使用 Dynamics SDK、C#、VB 或 JScript 来执行此操作。
有没有办法在纯javascript中做到这一点?我只需要找到一个网络服务来发送/获取数据,但找不到它。有没有这样的网络服务或api存在???请帮助我完全糊涂了!!!谢谢。
如果其他人提到需要,您可以使用 SOAP 进行连接(可能不推荐,但您想知道)。如果您不知道如何使用 SOAP/JavaScript,那么我建议您阅读以下内容: 最简单的 SOAP 示例
要使用 Office 365 连接到 CRM Online(所有 Windows Live 帐户都正在迁移到 Office 365),那么您需要获取安全令牌,然后将其用于您的请求。
以下是 PHP 中的令牌请求,您应该能够为 JavaScript 重构它。
$TokenSOAP = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
<a:MessageID>urn:uuid:%s</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">%s</a:To>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>%sZ</u:Created>
<u:Expires>%sZ</u:Expires>
</u:Timestamp>
<o:UsernameToken u:Id="uuid-cdb639e6-f9b0-4c01-b454-0fe244de73af-1">
<o:Username>%s</o:Username>
<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">%s</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>urn:crmapac:dynamics.com</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
</t:RequestSecurityToken>
</s:Body>
</s:Envelope>';
$TokenSOAP = sprintf($TokenSOAP, self::gen_uuid(), 'https://login.microsoftonline.com/RST2.srf', self::getCurrentTime(), self::getNextDayTime(), $username, $password);
根据您的 crm 区域,根据需要更改 Endpoint Reference 地址
这将返回两个安全令牌和一个密钥标识符。
然后你需要做你的添加和检索。如果您搜索“CRM 2011 SOAP”和以下四个函数“Create”、“Update”、“Retrieve”和“RetrieveMultiple”,您应该会得到很多 SOAP 示例,例如:
http://www.mscrmconsultant.com/2012/07/create-update-delete-record-using.html
与 Javascript 和 CRM 交互的两种方式是通过 OData 或 SOAP 服务。最简单的方法是尽可能使用 OData。
您将遇到的问题是使用 Odata 进行身份验证。 在 CRM javascript 和 Silverlight 之外不支持 OData 访问。(虽然我使用 LinqPad 来创建我的 Odata 查询,并且它可以很好地查询 CRM,所以我不确定那是什么意思)
解决这个问题的常用方法是编写您自己的 Web 服务来向 CRM 进行身份验证,然后使用 SDK 检索和更新数据,以一种安静的方式将其公开给您。
正如 Guido 指出的那样,您应该能够使用来自 Java 的 SOAP 请求,但我也只在 CRM 中这样做过,而且我不确定您还会面临哪些身份验证问题。