2

wsdl2perl とのインターフェイスを正常に構築した後、この Web サービスのデータを一般的な方法で取得しようとしています。

私は SOAP と WSDL の初心者です。Google/CPAN を調べました。もちろん、ここスタックで、Web サービス API を介してデータを取得する方法も調べました。Perl の方が好きです。次のオプションを検討した後:

  1. SOAP::ライト
  2. SOAP::WSDL (そうです! 私の Web サービス プロバイダーにはクリーンな wsdl があります)
  3. wsdl2perl !
  4. スタブメーカー

私は選択肢 3 を選びました (それは正しい選択でしたか?)

元のクラスのすべての個々の属性が常に存在するとは限らない配列を返す Web サービスによって返されるすべてのデータを取得しようとしています (返された XML にあった場合は保留中)。as_hash_refを使用できます。次のように:

my $h = $objects->get_return()->[0]->as_hash_ref();
print join ", " => keys %$h, "\n";

これにより、配列の最初のすべてのキーが得られますが、wsdl2perl でMyTypes::Object.

私は基本的に、スーパークラスのタイプがSOAP::WSDL::XSD::Typelib::ComplexType!であるクラスのすべてのクラスメソッドを取得しようとしています。

クラス自体でいくつかのヒントを探してみました。

confess "Can't locate object method \"$_\" via package \"$class\". \n"
        . "Valid methods are: "
        . join(', ', map { ("get_$_" , "set_$_") } keys %{ $ATTRIBUTES_OF{ $class } })
        . "\n"

しかし、さらに掘り下げてみると、それ$ATTRIBUTES_OFが への呼び出しで満たされていることがわかり、wsdl2perl によって作成され__PACKAGE__->_factoryた特定のクラスのすべてのゲッターを取得する方法に行き詰まっています。MyTypes::Object

簡単に言えば、Web サービスから返された配列のすべての要素を一般的に繰り返し処理し、MyTypes::Objectwsdl2perl によって作成されたクラスの可能なすべての属性を (csv ファイルに) 出力しようとしています。

4

0 に答える 0