[salesforce]WSDLファイルが読み込めない
外部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