如何发送此肥皂请求?
问题描述:
我有SOAP请求的参数如下:如何发送此肥皂请求?
<soap:Body>
<GetProductList xmlns="http://schemas.acme.eu/">
<GetProductListRequest>
<Filters>
<Filter>
<Name>Language</Name>
<Value>lt-lt</Value>
</Filter>
<Filter>
<Name>Currency</Name>
<Value>LTL</Value>
</Filter>
</Filters>
</GetProductListRequest>
</GetProductList>
</soap:Body>
我尝试发送的请求是这样的:
$result = $client->GetProductList(array('Filters' => array(
'Filter'=> array('Name' => 'Language', 'Value' => 'lt-lt'),
'Filter'=> array('Name' => 'Currency', 'Value' => 'LTL'))));
但我在这里得到错误:
(!) Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in C:\wamp\www\tarpine_xml\class\acme_xml.php:25 Stack trace: #0 C:\wamp\www\tarpine_xml\class\acme_xml.php(25): SoapClient->__call('GetProductList', Array) #1 C:\wamp\www\tarpine_xml\class\acme_xml.php(25): SoapClient->GetProductList(Array) #2 C:\wamp\www\tarpine_xml\index.php(18): ACME_XML->parseACME() #3 {main} thrown in C:\wamp\www\tarpine_xml\class\acme_xml.php on line 25
不带参数的其他要求工作正常..那么我的要求有哪些错误?
解决
我创建这个代码:
$parrams['GetProductListRequest']['Filters']['Filter'] = array();
$parrams['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Language', 'Value' => 'lt-lt');
$parrams['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Currency', 'Value' => 'LTL');
$result = $client->GetProductList($parrams);
而且它完美的作品:)
答
不熟悉这个FW,但我认为你需要添加GetProductListRequest
到请求(这是根xml标签)。
所以,你应该是这样的:
$result = $client->GetProductList(array('GetProductListRequest'=>array('Filters' => array(
'Filter'=> array('Name' => 'Language', 'Value' => 'lt-lt'),
'Filter'=> array('Name' => 'Currency', 'Value' => 'LTL')))));
+0
nope,没有帮助:) – 2012-07-05 12:02:45
+0
你在哪里正确的项目GetProductListRequest,但没有与所有请求:) – 2012-07-05 12:16:55
答
小修复您正在使用的库
$params['GetProductList']['GetProductListRequest']['Filters']['Filter'] = array();
$params['GetProductList']['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Language', 'Value' => 'lt-lt');
$params['GetProductList']['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Currency', 'Value' => 'LTL');
不知道,但你明明做错事,当你确定在您的参数中输入'Filter'两次... – 2012-07-05 11:57:15
我使用$ client = new SoapClient(“https://api.acme.lt/1.0/commerce.asmx?wsdl”);这种方法 – 2012-07-05 12:03:12