Perl aracılığıyla SOAP kullanarak bir web servisine erişmeye çalışıyorum ve hizmetlerin parametreler gerektiren işlevlerini çağıran sorunlar yaşıyorum. SABUN çağrı diyor dikte XSD, hizmet için Docs göre Perl ile parametrelerle arama işlevleri Perl ile
<xs:complexType name="getVersion">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="getVersionResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
...
<xs:complexType name="enumerateEntities">
<xs:sequence>
<xs:element name="entityId" type="xs:int"/>
<xs:element minOccurs="0" name="entityType" type="tns:entityType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="enumerateEntitiesResponse">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:int"/>
</xs:sequence>
</xs:complexType>
, iki fonksiyon için imzalar şunlardır: Ben gerektiren, birinci işlevi çağırmak mümkün duyuyorum
String getVersion()
int[] enumerateEntities (int entityId, EntityType entityType)
kullanarak hiçbir giriş parametreleri,:
#!/usr/bin/perl
use SOAP::Lite;
my $uri = 'http://wsdl.mydomain.com/';
my $service = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '"Call by on_action: %s"',shift})
-> proxy('http://192.168.1.100:8688/MyService/services/MyService.MyServicePort/');
$method = SOAP::Data->name("MyService")->attr({xmlns => $uri});
$getVersion = SOAP::Data->name("getVersion")->attr({xmlns=>$uri});#line 11
my $theResult = $service->getVersion;
unless ($theResult->fault){ print "Version: "; print $theResult->result;}
else {print $theResult->faultstring;}
... ama nafile olmuştur üzerindeki çizgiyi 11 değiştirerek parametrelerle bir işlevini çağırarak de (aşağıda) benim girişimi.
...
@entityId = SOAP::Data->type('int')->name('entityId')->value(0);
@entityType = SOAP::Data->type('EntityType')->name('entityType')->value(NODE);
$enumerateEntities = SOAP::Data->name("enumerateEntities",@entityId,@entityType)->attr({xmlns=>$uri});
my $result2 = $service->enumerateEntities;
print $result2->result;
Hata yaptığım şey, bu, hizmetin işlevlerini parametrelerle çağırmamı engelliyor?
Düzenleme: İşte var SOAP :: WSDL
#!/usr/bin/perl
use SOAP::WSDL;
use Data::Dumper;
my $service = SOAP::WSDL->new(
wsdl => 'http://192.168.1.100:8688/MyService/services/MyService.MyServicePort?wsdl',
outputhash => 1
);
kullanılarak güncellenen örnek kod
Bunu ancak baz uri olmadan ad ... alınamıyor", söylenene. Birini ayarlamak için> parse_uri < or > set_uri
Benzer bir sorun yaşıyorum ve bu çözümü denedim ve parametreler sadece giden istekte bulunmuyor. Http://stackoverflow.com/questions/1765248 – aidan
Yukarıdaki hizmetler, birçok hizmete karşı bana hizmet veriyor –