2012-04-23 12 views
0

SOAPベースのWSDLを生成する別のインスタンスで動作する別のSFDC開発者グループからのクラスファイルが与えられました。私はそのクラスファイルをインポートし、私たちのインスタンスでWSDLを生成しました。 Webサービスは非常に基本的なものであり、一連の値(もちろんXML)を返すだけであり、これらの値を取得するための引数は必要ありません。ColdfusionによるSalesforce WSDLの使用問題

WSDLが動作していることをテストするだけで、私たちのインスタンスから自分のローカルPCにWSDLをダウンロードしてSOAPUIに入れ、値のセットを正常に返しました。

NOW ISSUE ONTO

- ColdFusionののCFHTTPを使用してURL

イムVIAがかかるので、私は2つのCFHTTPコールを持って、最初は、有効なセッションIDを返します。私たちのインスタンスのログインにあります。このセッションIDは、以下である私の2回目の呼び出しで使用されます。以下は

<!--- 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

WSDLファイルのURLにAPi呼び出しを送信しているようですが、これは正しいURLではありません.WSDLファイル内の詳細なサービスアドレスに送信する必要があります。servicesoap:address要素を参照してください。 WSDLの最下部にある要素です。

+0

それでした!感謝万円! – user891859

関連する問題