我是SOAP::Lite的新手,正在尝试快速入门。我有一个支持SOAP的JAMA服务器(需求收集应用程序),我正在查看它的WSDL。
我需要的SOAP::Lite信息在WSDL中可用吗(特别是代理和命名空间/uri)?
WSDL包含以下内容:
<wsdl:definitions xmlns:ns1="http://v3.ws.contour.jamasoftware.com/"
xmlns:ns2="http://cxf.apache.org/bindings/xformat"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://v3.ws.contour.jamasoftware.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ContourSoapServiceV3"
targetNamespace="http://v3.ws.contour.jamasoftware.com">
<wsdl:import
location="http://MYSERVER/jama/ws/v3/soap/ContourSoapService?wsdl=ContourSoapService.wsdl"
namespace="http://v3.ws.contour.jamasoftware.com/"/>
<wsdl:binding name="ContourSoapServiceV3SoapBinding" type="ns1:ContourSoapService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
And a little later on...
<wsdl:operation name="getProjects">
<soap:operation soapAction="getProjects" style="document"/>
<wsdl:input name="getProjects">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getProjectsResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
作为将来的参考,我确实让它大部分工作正常,下面是代码:
my $soap = SOAP::Lite
-> proxy('http://MYSERVER/jama/ws/v3/soap/ContourSoapService')
-> uri('http://v3.ws.contour.jamasoftware.com');
print "Soap is $soap\n";
# Soap is SOAP::Lite=HASH(0x7fdc24e3fb70)
我运行的PERL代码是:
my $service = SOAP::Lite->service('http://MYSERVER/jama/ws/v3/soap/ContourSoapService?wsdl');
print "service is $service\n";
# This says service is ContourSoapServiceV3=HASH(0x7fd244804678) which is happy
# But then I can't figure out what to do with $service
my %hash = %$service;
foreach my $key (keys %hash )
{
print "key $key\n";
}
# service is ContourSoapServiceV3=HASH(0x7f8c8bf342f8)
# key _packager
# key _transport
# key _on_fault
# key _on_nonserialized
# key _deserializer
# key _on_action
# key _autoresult
# key _schema
my $schema = $service->_schema();
print "schema is $schema\n";
# Unrecognized method '_schema'. List of available method(s):
# getDownstreamRelationships getRelationshipsForProject addAttachmentToItem
# signBaseline clearSuspectLinksForItem deactivateProject
# and eventually:
# getVersion
# and then many more
print "Version is " . $service->getVersion(3, 6) . "\n";
# Use of uninitialized value in concatenation (.) or string at ./JamaItems.perl line 66.
# And if I bypass the $service it's no better:
print "Version is " . SOAP::Lite
-> proxy('http://MYSERVER/jama/ws/v3/soap/ContourSoapService')
-> uri('http://v3.ws.contour.jamasoftware.com')
-> getVersion(3, 6)
-> result . "\n";
# Use of uninitialized value in concatenation (.) or string at ./JamaItems.perl line 70.
我传递给getVersion()的参数肯定是错误的,这是否足以导致函数不返回任何内容?我原以为它至少会给我一些错误。。。
我发现了神奇的命令:
$soap->outputxml('true');
现在我可以看到,当我用一个无效参数调用getProjects()函数时,它实际上是在与服务器对话,并得到一个错误:
my $soap = SOAP::Lite
-> proxy('http://MYSERVER/jama/ws/v3/soap/ContourSoapService')
-> uri('http://v3.ws.contour.jamasoftware.com');
print "Soap is $soap\n";
# Soap is SOAP::Lite=HASH(0x7fdc24e3fb70)
my $projects = $soap->getProjects(3);
print "Projects are $projects\n\n";
# Projects are <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
# <soap:Body><soap:Fault>
# <faultcode>soap:Server</faultcode>
# <faultstring>Access control</faultstring>
# </soap:Fault></soap:Body></soap:Envelope>
因此,即使WSDL在学习参数应该是什么方面没有帮助,文档中说它是一个WsAuth对象,所以现在我只需要弄清楚如何创建其中一个。
我用肥皂::精简版和一个。NET Web服务(*. asmx格式)。Web服务提供了一个WSDL,但这不是我在代码中引用的。
my $soap = SOAP::Lite
-> uri('http://myserver')
-> on_action( sub { join '/', 'http://myserver', $_[1] } )
-> proxy('http://myserver/services/GetEmailAddress/Service.asmx');
my $method = SOAP::Data->name('GetEmailAddress')
->attr({xmlns => 'http://myserver/'});
my @params = ( SOAP::Data->name(username => "someusername") );
my $email = $soap->call($method => @params)->result;
我从那里学到的一切https://msdn.microsoft.com/en-us/library/ms995764.aspx.不确定这是否会对您有所帮助,因为您可能没有asmx格式的web服务,但可能会!
我已经用soap请求启动了一个新项目,我遵循了一些关于它的教程,但它并没有像它应该做的那样好。 我将这部分代码用于请求: 它给了我这个错误: SoapFault异常:[HTTP]不支持的媒体类型堆栈跟踪: 所有参数的类型都可以根据我得到的留档。和php部分似乎可以对我和我找到的所有教程。 我想知道这是否是头部问题或类似的问题。 WSDL在[这里](https://smarteye.ariadnex
问题内容: 是否有任何软件包可以在Go上支持 SOAP / WSDL ? 问题答案: 不。 SOAP很烂,但是我必须实现一个使用SOAP的已经定义好的协议的服务器,因此我使用进行监听并使用对其进行了解码/编码。几分钟后,我已经将Go的第一个信封送达了。
请原谅我对肥皂不太熟悉。我的任务是将通过第三方供应商的SOAP API提供给我们的多个pdf文件保存到我们的Web服务器上。供应商API的结果提供如下 我已经做到了这样一个地步:我可以用php将pdf输出到浏览器,而不需要使用以下代码: 我根据结果的base64Binary类型假设需要base64_decode。结果只剩下一堆符号。我尝试将结果转换为字符串,然后保存到PDF。这让我更接近了,因为至
我使用apache cxf创建了一个肥皂网络服务,当我发布我的网络服务时,我得到了一个没有复杂类型部分的WSDL,这是我的代码: 我的Interafce: 我的配置: 我的请求对象: 这是生成的WSDL: 为什么在生成的WSDL中找不到像“referenceNumber”这样的请求属性
让我画出场景以便更好地理解&以我的理解 我手上的东西 web url() 2个WSDL链接 ==>https:.../schemas/informationservice.wsdl ==>https:.../schemas/orderuploadservice.wsdl 过程“请求的MethodRequest”不存在。 函数“请求的方法”不存在。 参见输出 或者有时(通过注释一些其他选项或修改ur
我试图从服务创建一个基于WSDL的代理。此服务运行在tomcat服务器中,该服务器已配置为只接受使用TLSV1.2的安全连接。并且该服务在运行wso2server的intranet之外。 当我测试基于wsdl的代理模板中的wsdl uri时,问题就会出现,并启动系统以下警报:“无效的wsdl uri(无法建立连接)”。我不得不说,wso2esb与外部有连接,问题不在于访问这个url,因为: nul