2012-04-23 26 views
0

我已经从另一组SFDC开发人员获得了一个类文件,这些开发人员在一个生成基于SOAP的WSDL的单独实例中工作。我已导入该类文件并在我们的实例中生成了WSDL。 web服务是非常基本的,它只返回一组值(当然在XML中)并且不需要任何参数来检索这些值。通过Coldfusion使用Salesforce WSDL问题

只是为了测试WSDL是否正常工作,Ive将WSDL从我们的实例下载到本地PC并放入SOAPUI,并成功返回了该组值。

现在到这个问题 - CONSUMING VIA使用ColdFusion的CFHTTP的URL

IM,所以我有两个CFHTTP电话,第一个是我们的实例的登录返回一个有效的会话ID。这个会话ID在我的第二个电话是下面使用:

<!--- token from from first cfhttp ---> 
<cfset variables.access_token_node = xmlSearch(XMLContent, "//*[name()='sessionId']") /> 
<cfset variables.access_token = variables.access_token_node[1].xmlText> 

<cfset variables.wsdl_url2 = "https://cs12.salesforce.com/services/wsdl/class/WS_FAKE_WSDL"> 

<cfset packet = CreateObject("java", "java.lang.StringBuffer") /> 
<cfset packet.append('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://soap.sforce.com/schemas/class/WS_FAKE_WSDL">') /> 
<cfset packet.append('<soapenv:Header>') /> 
<cfset packet.append('<ws:SessionHeader>') /> 
<cfset packet.append('<ws:sessionId>#variables.access_token#</ws:sessionId>') /> 
<cfset packet.append('</ws:SessionHeader>') /> 
<cfset packet.append('</soapenv:Header>') /> 
<cfset packet.append('<soapenv:Body>') /> 
<cfset packet.append('<ws:DescribesObjectFields/>') /> 
<cfset packet.append('</soapenv:Body>') /> 
<cfset packet.append('</soapenv:Envelope>') /> 

<cfhttp method="post" url="#variables.wsdl_url2#" result="findResponse2"> 
<cfhttpparam type="HEADER" name="Accept" value="application/soap+xml, application/xml, multipart/related, text/*"> 
<cfhttpparam type="HEADER" name="ACCEPT-ENCODING" value="application/soap+xml"> 
<cfhttpparam type="HEADER" name="CONNECTION" value="Keep-Alive"> 
<cfhttpparam type="HEADER" name="SOAPAction" value="dummy"> 
<cfhttpparam type="HEADER" name="Content-Type" value="text/xml; charset=utf-8"> 
<cfhttpparam type="HEADER" name="Must-Understand" value="1"> 
<cfhttpparam type="Header" name="Content-Length" value="#len(trim(packet.ToString()))#"> 
<cfhttpparam type="body" value="#packet.ToString()#" encoded="yes"> 
</cfhttp> 

下面就是我从WSDL..that码接收只是把我带回到登录屏幕。有了会话ID,我会假设我不需要重新登录,对吗?

enter image description here

所有建议表示赞赏。

回答

3

您似乎在将APi调用发送到WSDL文件的URL,这不是正确的URL,您应该将它发送到WSDL文件中详细描述的服务地址,请参阅service中的soap:address元素元素位于WSDL的底部。

+0

这样做!太感谢了! – user891859 2012-04-23 18:52:45