1 php asp.net web-services soap-client
您好我在将数组,结构和结构数组从PHP发送到ASP.NET SOAP服务器时遇到问题...
有人为此解决了吗?我用Google搜索了几天,任何sollution都适合我.Perphaps我忘了什么......
我的代码有一些例子:
$client = new SoapClient($options);
$pCriteria = new stdClass();
$pCriteria->type=1;
$pCriteria->capacity=4;
//Test 1 (fail):
$resp = $client->GetRooms(array("pCriteria"=>$pCriteria));
//Test 2 (fail):
$resp = $client->GetRooms(array("pCriteria"=>new SoapVar($pCriteria, SOAP_ENC_OBJECT, "TCriteria", "http://www.w3.org/2001/XMLSchema")));
print_r($resp);
Run Code Online (Sandbox Code Playgroud)
我不知道如何编写需要一系列TCriteria(TCriteria [],TCriteria_Array类型)的函数...我已经尝试发送原始数组,一个带SOAP_ENC_ARRAY编码和TCriteria_Array类型的SoapVar,......但它不起作用(SOAP服务器变得不可用,需要重新启动).
我也试过为复杂类型创建类,而不是stdClass,但是没有工作.
我不知道问题出在哪里.服务器管理员无法帮助我,我没有在互联网上找到任何解决方案.我有点绝望嘿嘿.
你能帮我吗?你能提供三种情况的代码样本(简单数据数组,结构和结构数组)吗?谢谢!
我有一个类似的情况,PHP Soap Client使用WSDL 2.0与.NET Soap Server通信.这是我发现的一件事:将信息传递给服务器时,必须将变量显式定义为SoapVar对象.因此,在上面的示例中,将其更改为:
$pCriteria->type = new SoapVar(1, XSD_INT, 'xsd:int');
Run Code Online (Sandbox Code Playgroud)
传递数组是类似的,实际上你传递了一个SoapVars数组:
$pCriteria->type = array(new SoapVar(1, XSD_INT, 'xsd:int'), new SoapVar(2, XSD_INT, 'xsd:int', new SoapVar(3, XSD_INT, 'xsd:int'));`enter code here`
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用SoapClient的几个内置函数来获取有关可能错误的一些额外反馈.
$client->__getLastRequest() //To display the XML that you sent to the server
$client->__getLastResponse() //to display the XML that is sent in response to your request
Run Code Online (Sandbox Code Playgroud)
如果您可以获得预期的WSDL格式的副本,则可以使用上述命令的响应来确定出现了什么问题.通常,您可以从传递给SoapClient的URL访问它.因此,例如,如果WSDL服务URL是http://example.com/webservices/wvrgroupservice.asmx?WSDL,请输入http://example.com/webservices/wvrgroupservice.asmx以查看函数和期望的XML.服务器.
| 归档时间: |
|
| 查看次数: |
10326 次 |
| 最近记录: |