/ / Perl WSDL11でWSDL上でXML import-xml、perl、web-services、soap、wsdlを使用できない

Perl WSDL11はXMLでWSDL上で動作することはできませんimport - xml、perl、web-services、soap、wsdl

私はPerlプログラミングの初心者です。

石鹸サービスにアクセスする方法を学ぶために、私は石鹸クライアントを作成しようとしました。 この 私はウェブサービスを使用するのに成功しました。

さて、私のコードを私の会社の石鹸サービスに接続するために移行しましたが、問題が発生しました。

"エラーは、彼らはport_typeも操作もないと言っています。"

下記のコードスニペットを参照してください。

#!/usr/bin/perl

use 5.018;
use strict;
use warnings;

use Data::Dumper qw{Dumper};
use XML::Compile::SOAP11;
use XML::Compile::SOAP12;
use XML::Compile::WSDL11;

my $WsdlUrl;
my $WsdlXml;
my $SoapSrvc;
my (%SoapOps);

$WsdlUrl = "http://maxcavmes04/CamstarExternal/camstar.svc";
$WsdlXml = XML::LibXML->new->parse_file($WsdlUrl);
$SoapSrvc = XML::Compile::WSDL11->new($WsdlXml);

print Dumper($SoapSrvc);

foreach my $SoapOp ($SoapSrvc->operations())
{
# XML::Compile::SOAP 2.x
if ($XML::Compile::SOAP::VERSION > 1.99)
{
$SoapOps{$SoapOp->name}
= $SoapSrvc->compileClient(operation => $SoapOp->name,
port => SOAP_PORT_TYPE);
}
else  # XML::Compile::SOAP 0.7x
{
$SoapOps{$SoapOp->{operation}}
=  $SoapSrvc->compileClient(operation => $SoapOp->{operation},
port => SOAP_PORT_TYPE);
}
}

print "nn";
exit(0);

なぜそれがなぜうまくいかなかったのかをさらに調査し、私は第三者ソフトウェアと呼ばれる .NET WebService Studio。私はWebService Studioの返却から私の会社のSoapサービスが2つを使用していることを認識しています WSDL ファイル WSDL:Import.

このコミュニティから、WSDL11を使用して企業の石鹸サービスにアクセスするために自分のプログラムをどのように変更できるかを質問したいと思います。

私はまた、石鹸サービス接続のダンプされたデータを参照として添付しました。 print Dumper($SoapSrvc) ステートメント。

リンク: Dumped_SoapSrvcデータ

回答:

回答№1は0

原因はXML :: Compile ::WSDL11はwsdlファイルから参照されるxsdをロードしません。 wsdlファイルをダウンロードする必要があります。のような外部ファイルへの参照を見つけるためにそれを読んでください。参照ファイルをダウンロードして参考文献を確認してください。

my $wsdl = XML::Compile::WSDL11->new();
$wsdl->importDefinitions("first.xsd");
$wsdl->importDefinitions("second.xsd");
$wsdl->addWSDL("my_service.wsdl");

wsdlファイルを投稿すると問題を診断する方が簡単です。