[salesforce]WSDLファイルが読み込めない

By |11月 8, 2009|salesforce, |


外部Webサービスと連携するAPEXコードを書くときに、その外部WebサービスがWSDLファイルを提供してくれていると、連携するためのAPEXクラスの作成を自動的に行ってくれて便利です。

方法は、[設定][開発][APEXクラス][WSDLからの生成]
ここでWSDLファイルをアップロードできるので、連携先のサービスから提供されているWSDLファイルをアップロードして解析を行い、APEXクラスを作成します。

がしかし、このWSDLファイルの読み込みでよくよく失敗します。いくつかメジャーどころのサービスとの連携を試してみたが軒並み失敗です。ヤフーオークションさんとかアマゾンさんとか。他にもなんやかんや試しましたが失敗。

エラーメッセージとしては、

  • Failed to parse wsdl:

ってのがよくでます(他にもでますが)。WSDLの解析に失敗しましたよ、というメッセージでこの後ろに具体的なエラー箇所がつらつら出てきます。読み込もうとしたWSDL書式が、Salesforceが想定するWSDL書式と異なっていてエラーになっている、ということなんでしょうか。よくわかりません。。

よく遭遇して解決したパターンが、自動生成されたAPEXコードとSalesforce内の予約語が衝突するケース。自動生成されたメソッド名が「update」とか「delete」とかありがちなものになっている時にそれがSalesforce内の予約語とぶつかりエラーになります。対処方法としてはWSDLファイルを編集して適当な名前に置き換えたらうまくいきました。update_hogehogeとかdelete_hogehogeとか。

遭遇して未解決なパターンが、

  • Unsupported WSDL. Operation ‘hogehoge’ has more than one output element.

みたいなメッセージが出るケース。ディスカッションボードでもちらほらでてますが、未解決のようで、お手上げです。みんな手動でAPEXクラス作ったりして回避してるようで。
Apex generation from WSDL failed for Fedex shipping WSDL
Apex code generation error
Re: Apex cannot parse wsdl