none
javascript请求webservice格式有问题么 求指教 RRS feed

  • 问题

  • 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>" +
    
    	" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
    
    	"  <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
    
    	"  <q1:EntityName>account</q1:EntityName>" +
    
    	"  <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
    
    	"   <q1:Attributes>" +
    
    	"   <q1:Attribute>name</q1:Attribute>" +
    
    	"   </q1:Attributes>" +
    
    	"  </q1:ColumnSet>" +
    
    	"  </query>" +
    
    	" </RetrieveMultiple>" +
    
    	" </soap:Body>" +
    
    	"</soap:Envelope>";
    
    
    
     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    
     xmlHttpRequest.Open("POST", Xrm.Page.context.getOrgUniqueName()+"/mscrmservices/2007/CrmService.asmx", true);
    
     xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    
     xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    
     xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    
    
    
     xmlHttpRequest.send(xml);
    
     var resultXml = xmlHttpRequest.responseXML;
    
    

    Dude....
    总是报错:Unspecified error
    • 已编辑 CukeLock 2011年3月28日 2:47 问题描述不足
    2011年3月28日 2:46

答案

  • 可以的,

    crm2011的sdk中有一个工具,叫做soaplogger,你可以看一下

    如果是crm4的webservice调用,你可以下载一个stunware的JavaScript Web Service Calls 4.0工具


    daemon lin
    • 已标记为答案 CukeLock 2011年4月1日 5:39
    2011年3月29日 6:33

全部回复

  • 第一,你的错误信息没有捕获完整;

    第二,不知道你需要使用这段代码完成什么样的逻辑,我的感觉是你去获取了account中的数据,但是没有查询条件啊,不知道是你没有粘贴查询条件,还是就没有查询条件


    daemon lin
    2011年3月28日 6:03
  • 1:我用IE8  F12 那个tool调的代码,就说的Unspecified error。不晓得怎么具体的捕捉异常错误什么的。

    2:就是没写查询条件啊。不知道这东西究竟该怎么个格式,找不到个例子照着写。 我想取出所有account的name。

    求指教

     


    Dude....
    2011年3月28日 6:08
  • CrmService.CrmService ser = GetCrmService();
    
          RetrieveMultipleRequest rmr = new RetrieveMultipleRequest();
          QueryExpression qe = new QueryExpression();
          qe.EntityName = EntityName.account.ToString();
          ColumnSet col = new ColumnSet();
          col.Attributes = new string[] { "name","accountid"};
          qe.ColumnSet = col;
          rmr.ReturnDynamicEntities = true;
          rmr.Query = qe;
          RetrieveMultipleResponse rm = (RetrieveMultipleResponse)GetCrmService().Execute(rmr);
    
    而且我用后台代码如上取值 都没问题,为什么在javascript 里就要写查询条件呢
    Dude....
    2011年3月28日 6:13
  • 我试验了一下,按照c#代码,创建的request 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">
      <soap:Header>
        <CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
          <AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">0</AuthenticationType>
          <OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">Demo</OrganizationName>
          <CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">00000000-0000-0000-0000-000000000000</CallerId>
        </CrmAuthenticationToken>
      </soap:Header>
      <soap:Body>
        <RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
          <query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression">
            <q1:EntityName>account</q1:EntityName>
            <q1:ColumnSet xsi:type="q1:ColumnSet">
              <q1:Attributes>
                <q1:Attribute>name</q1:Attribute>
                <q1:Attribute>accountid</q1:Attribute>
              </q1:Attributes>
            </q1:ColumnSet>
            <q1:Distinct>false</q1:Distinct>
            <q1:PageInfo>
              <q1:PageNumber>0</q1:PageNumber>
              <q1:Count>0</q1:Count>
            </q1:PageInfo>
            <q1:LinkEntities />
            <q1:Criteria>
              <q1:FilterOperator>And</q1:FilterOperator>
              <q1:Conditions />
              <q1:Filters />
            </q1:Criteria>
            <q1:Orders />
          </query>
        </RetrieveMultiple>
      </soap:Body>
    </soap:Envelope>


    daemon lin
    2011年3月28日 13:06
  • 你好,我想问下 你这个xml格式是怎么获得的?难道可以通过C#代码 来获得请求的xml???
    Dude....
    2011年3月29日 0:27
  • 可以的,

    crm2011的sdk中有一个工具,叫做soaplogger,你可以看一下

    如果是crm4的webservice调用,你可以下载一个stunware的JavaScript Web Service Calls 4.0工具


    daemon lin
    • 已标记为答案 CukeLock 2011年4月1日 5:39
    2011年3月29日 6:33
  • Thanks you so much
    Dude....
    2011年3月29日 6:56