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

Javascript-从MS Dynamics CRM Online添加和检索数据,javascript,web-services,titanium,dynamics-crm-2011,dynamics-crm-online,Javascript,Web Services,Titanium,Dynamics Crm 2011,Dynamics Crm Online,我想使用纯Javascript从MS Dynamics CRM Online 2011添加/检索数据。我搜索了一整天,但只能找到使用Dynamics SDK、C#、VB或JScript来完成此任务的方法 在纯javascript中有什么方法可以做到这一点吗?我只需要找到一个web服务来向/从中发送/获取数据,但找不到它。是否存在这样的web服务或api???请帮助我,我完全糊涂了!!!谢谢。与Javascript和CRM交互的两种方式是通过OData或SOAP服务。如果可能,最简单的方法是使用O

我想使用纯Javascript从MS Dynamics CRM Online 2011添加/检索数据。我搜索了一整天,但只能找到使用Dynamics SDK、C#、VB或JScript来完成此任务的方法


在纯javascript中有什么方法可以做到这一点吗?我只需要找到一个web服务来向/从中发送/获取数据,但找不到它。是否存在这样的web服务或api???请帮助我,我完全糊涂了!!!谢谢。

与Javascript和CRM交互的两种方式是通过OData或SOAP服务。如果可能,最简单的方法是使用OData

您将遇到的问题是使用Odata进行身份验证。(虽然我使用LinqPad创建我的Odata查询,并且它可以很好地查询CRM,所以我不确定这是怎么回事)

解决这个问题的常用方法是编写自己的Web服务,向CRM进行身份验证,然后使用SDK检索和更新数据,以restful方式向您公开数据


正如Guido指出的,您应该能够使用来自Java的SOAP请求,但我也只在CRM中这样做过,我不确定您也将面临哪些身份验证问题。

如果其他人提到需要,您可以使用SOAP进行连接(可能不推荐,但您想知道)。如果您不知道如何使用SOAP/JavaScript,我建议您阅读以下内容:

要使用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);
$TokenSOAP=”

您是否从CRM本身运行javascript?或者你是从另一个网站上做的?不,实际上我想从一个移动应用程序上做这件事,用户将输入数据并发送到CRM Online。我使用的是Appcelerator Titanium,这意味着我在任何情况下都必须使用Jscript和Dynamics SDK环境,而且纯javascript没有可用的api或web服务。我说的对吗?OData端点在CRM上下文之外不可用,但这并不意味着不可能仅使用JavaScript查询CRM,可以使用SOAP内点(当然不是简单的方法)@GuidoPreite你能给我一些指导吗?目前,我只需“添加新潜在客户”和“获取现有潜在客户”即可向用户展示。@MuhammadQasim我建议不要对来自外部应用程序(特别是CRM Online)的CRM Web服务仅使用JavaScript,最好创建一个.NET Web服务,作为CRM和您的应用程序之间的代理application@GuidoPreite好的,我知道了。这是一种选择。如果你不介意的话,你还可以给我看其他的选择吗。