繁体   English   中英

Javascript-从MS Dynamics CRM Online添加和检索数据

[英]Javascript - Add and retrieve data from MS Dynamics CRM Online

我想使用纯Javascript从MS Dynamics CRM Online 2011添加/检索数据。 我整天都在搜索,但是只能通过Dynamics SDK,C#,VB或JScript来做到这一点。

有没有办法用纯JavaScript做到这一点? 我只需要找到一个Web服务即可向/从/发送数据,但找不到它。 是否存在任何此类Web服务或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 Access (尽管我使用LinqPad创建了我的Odata查询,并且它可以很好地查询CRM,所以我不确定这是怎么回事)

解决此问题的常用方法是编写自己的Web服务,该服务将对CRM进行身份验证,然后使用SDK检索和更新数据,并以轻松的方式将其公开。

正如Guido指出的那样,您应该能够使用来自Java的SOAP请求,但是我也只能在CRM内完成此操作,而且我不确定您还将遇到什么身份验证问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM