让我画出场景以便更好地理解&以我的理解
我手上的东西
.asmx
)
==>https:.../schemas/informationservice.wsdl
==>https:.../schemas/orderuploadservice.wsdl $x = new SoapClient(<wsdlink>, [
// 'local_cert' => '<cert>.pem',
// 'allow_self_signed' => true,
// 'cache_wsdl' => WSDL_CACHE_NONE,
'location' =>'https://192.168.xx.xx/wsdl/try.php',
'uri' =><other_wsdlink>,
'passphrase' => $passphrase,
'exceptions' => false,
'trace' => true,
'soap_version' => SOAP_1_1
//'connection_timeout'=>2000,
//'encoding'=> 'ISO-8859-1' // 'UTF-8'
]);
参见输出
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Procedure 'requestedMethodRequest' not present</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
或者有时(通过注释一些其他选项或修改uri)
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Function 'requestedMethod' doesn't exist</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
Array
(
[0] => firstFunctionWithoutParam
[1] => secondFunctionWithoutParam
[2] => requestedMethodResponse RequestedMethod(requestedMethodRequest $messagePart)
[3] => secondFunctionClassParam
)
- Unable to set private key file <cert>.pem
- failed to create an SSL handle
- Failed to enable crypto
- (<wsdlink>):failed to open stream: operation failed
- I/O warning : failed to load external entity <wsdlink>
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);
>
是否需要在构造函数中同时设置SOAPClient
和SOAPServer
?
我需要为证书文件设置一些额外的规则吗?
$URI
选项执行什么操作(这是必需的)以及发送请求或
这是证书问题还是可能是系统或网络问题(Ubuntu14.04),如果是,如何检查?
更改许可证书
openssl pkcs12 -in certificatefile.PFX -out certfile.pem -nodes -clcerts
和取消注释cert
选项,并注释__doRequest方法中的所有preg_replace
代码
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<addressVerificationRequest xmlns="urn:DCNZ.MSP.Wireline.Wholesale.Common">
<addressVerification>
<samId xmlns="urn:DCNZ.MSP.Wireline.Wholesale.Common">string</samId>
...
<postalCode xmlns="urn:DCNZ.MSP.Wireline.Wholesale.Common">string</postalCode>
</addressVerification>
</addressVerificationRequest>
</soap:Body>
</soap:Envelope>;
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:DCNZ.MSP.Wireline.Wholesale.Messages">
<SOAP-ENV:Body><ns1:addressVerificationRequest/></SOAP-ENV:Body>
</SOAP-ENV:Envelope>'
确保在PHP中获得正确类的任何简单方法都是使用https://github.com/wsdl2phpgenerator/wsdl2phpgenerator,它们提供了一个命令行生成器,您可以使用现有的WSDL运行该生成器,它将为所有请求和响应生成一系列PHP类,最重要的是为服务生成一系列PHP类。
在调用webservice的类中,您可以执行以下操作:
// Construct the service
$service = new Service();
// Construct the request
$request = new RequestMethod();
$request->element = "test";
// Call the function
$response = $service->callRequest($request);
// process response
die(var_dump($response));
如果您正在使用框架之类的东西,您可能必须重构生成的类,但它给了您一个很好的起点。
我在尝试连接magento v2时遇到此错误。0.2 SOAP API。 我正在本地主机上运行 我尝试了大多数解决方案,但没有一个奏效。 安装SOAP ssl存在于php.ini文件 在文件中获取内容不返回任何内容
问题内容: 我已经获得了WSDL文件,并且需要通过Internet使用此WSDL文件使用Web服务。我需要在Java中执行此操作。 有人可以告诉我这样做的步骤吗?我还要感谢一些有用的链接。 问题答案: 第一步是生成可以与此Web服务对话的类。看一下Axis2之类的开源解决方案。这将为您生成存根,以便您以代码与Web服务进行对话……然后,由您决定使用此服务。
那么,回到问题上来,鉴于微软建议不要在新的开发中使用WebRequest而是使用只提供异步API的HttpClient,我该怎么办呢? 这是我正在做的一些伪代码... 如何实现ProcessStuff()?
我对SOAP响应有问题,希望有人能帮助我。 当SOAP响应被SOAP::Lite模块反序列化时,我认为出了问题。在SOAP-响应中有一些“正常”节点和被引用的节点。但它不正确的反序列化。 SOAP响应: 结果哈希的转储: Perl代码:
我是SOAP::Lite的新手,正在尝试快速入门。我有一个支持SOAP的JAMA服务器(需求收集应用程序),我正在查看它的WSDL。 我需要的SOAP::Lite信息在WSDL中可用吗(特别是代理和命名空间/uri)? WSDL包含以下内容: 作为将来的参考,我确实让它大部分工作正常,下面是代码: 我运行的PERL代码是: 我传递给getVersion()的参数肯定是错误的,这是否足以导致函数不返
我正在用Spring Boot构建一个SOAP web服务。一个。wsdl文件是由第三方提供的,我正在用wsdl2java生成Java类。 当使用SoapUI进行测试时,我可以击中我的endpoint。但是,请求总是空的,除非我在SOAPUI中手动修改XML请求。 如何通过修改代码而不更改原始wsdl或XML请求来修复此问题?