Re: [SOAP] soapClient not creating XML request correctly
| From: | Bilig Ordos | Date: | Wed, 08 Aug 2012 21:10:53 +0000 |
| Subject: | Re: [SOAP] soapClient not creating XML request correctly | ||
| References: | 1 2 | Groups: | php.soap |
| Request: | Send a blank email to php-soap+get-3366@lists.php.net to get a copy of this message | ||
Naveen,
Thanks for the reply. I thought I don't need to use SoapParam if I use the soapClient with a
WSDL, which is what I am doing. What's your thought on that?
Thanks,
Bilig
________________________________
From: NAVEEN <naveenkr2001@yahoo.com>
To: Bilig Ordos <bilig.ordos@yahoo.com>; "soap@lists.php.net"
<soap@lists.php.net>
Sent: Wednesday, August 8, 2012 2:10 AM
Subject: Re: [SOAP] soapClient not creating XML request correctly
Hi Bilig,
Use SoapParam object to create params for soap function.
Please see php online documentation for the same.
Best,
Naveen
----- Original Message -----
From: Bilig Ordos <bilig.ordos@yahoo.com>
To: "soap@lists.php.net" <soap@lists.php.net>
Cc:
Sent: Tuesday, 7 August 2012, 22:09
Subject: [SOAP] soapClient not creating XML request correctly
Hi,
I'm trying to work with an existing SOAP/XML web services that is working fine with clients
written in Java and .Net. Any help/idea is greatly appreciated!
I need the soapClient to send the following XML request. I tested
this request with a third-party tool and made sure it works fine:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:con="http://www.xyz.com/product/schema/config"
xmlns:com="http://www.xyz.com/product/schema/common">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<con:getConfig>
<com:credential>
<com:user>user</com:user>
<com:password>pass</com:password>
<!--Optional:-->
<com:group>group</com:group>
</com:credential>
<!--Zero or more repetitions:-->
<con:orderPlanFilter>
<!--Optional:-->
<deviceName>abc</deviceName>
</con:orderPlanFilter>
</con:getConfig>
</soapenv:Body>
</soapenv:Envelope>
The "credential" is used for
authentication and the "orderPanFilter" is used for filtering the data by available
fields in the WS/DB.
My problem is that I was only able to have the soapClient send the following request:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.xyz.com/product/schema/common"
xmlns:ns2="http://www.xyz.com/product/schema/config">
<SOAP-ENV:Body>
<ns2:getConfig>
<ns1:credential>
<ns1:user>user</ns1:user>
<ns1:password>pass</ns1:password>
<ns1:group>group</ns1:group>
</ns1:credential>
</ns2:getConfig>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
As you can see, the soapClient does not send the "orderPlanFilter" part. I tried a few
variations of the code, but it basically goes like the following:
$op = "http location to URL";
try {
$x = @new SoapClient($op,
array('local_cert'=>file_get_contents('./client.trustore'),'passphrase'=>abcdef,
'trace
'=>1));
} catch (SoapFault $E) {
echo $E->faultstring;
}
$results =
$x->getOrderPlanConfig(array('credential'=>array('user'=>'user',
'password'=>'pass', 'group'=>'group')
, array('orderPlanFilter'=>array('deviceName'=>'abc'))));
echo
"REQUEST:<br />" . htmlentities($x->__getLastRequest()) . "<br
/>";
echo "<br /><br />";
var_dump_pre($results);
echo "<br /><br />";
And the response I received is (line break inserted manually for convenience):
REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.xyz.com/product/schema/common"
xmlns:ns2="http://www.xyz.com/product/schema/config">
<SOAP-ENV:Body>
<ns2:getConfig>
<ns1:credential>
<ns1:user>user</ns1:user>
<ns1:password>pass</ns1:password>
<ns1:group>group</ns1:group>
</ns1:credential>
</ns2:getConfig>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
object(stdClass)#2 (3) {
["ok"]=>
string(2) "ok"
["error"]=>
NULL
["data"]=>
NULL
}
I expected to receive some data based on the orderPlanFilter but since the request does not contain
the "orderPlanFilter" part, I'm not getting any data back.
Following is the result of "getFunctions()" and "getTypes()" from the WSDL:
Available Functions:
reply editorderPlanConfig(editConfig $orderPlanConfigEditRequest)
reply getorderPlanConfig(getConfig
$orderPlanConfigGetRequest)
Available Types:
struct credentialsType { string user; string password; string group; }
string ErrorTypes
string ErrorTag
struct dataErrorInfo { short sequenceNumber; string message; }
struct errorInfoType { dataErrorInfo badAttribute; dataErrorInfo badElement; dataErrorInfo
okElement; dataErrorInfo errElement; dataErrorInfo noopElement; }
string ErrorSeverity
string errorOptionType
struct errorType { ErrorTypes errorTtype; ErrorTag errorTag; ErrorSeverity errorSeverity; string
erroAppTag; string errorPath; int errorNumber; string errorMessage; errorInfoType errorInfo; }
string IP
string filterType
struct filter { filterType type; positiveInteger pageIndex; positiveInteger pageSize; }
string mediaRoutingType
struct webServiceFilter { webServiceFilterType type; positiveInteger pageIndex; positiveInteger
pageSize; short sequenceNumber; }
string
webServiceFilterType
struct intFilter { intOperator operator; string value; }
string intOperator
struct dateFilter { dateOperator operator; string value; }
string dateOperator
struct dateTimeType { dateTime dummy; }
struct config { credentialsType credential; orderPlanConfigType orderPlanConfig; }
struct dataType { orderPlanConfigType orderPlanConfig; }
struct reply { string ok; errorType error; dataType data; }
struct editConfig { config config; errorOptionType errorOption; }
struct getConfig { credentialsType credential; orderPlanFilterType orderPlanFilter; }
struct orderPlanFilterType { string deviceName; string group; string planName; dateFilter created;
dateFilter lastModified; }
struct orderPlanType { deviceName deviceName; group group; planName planName; dateTime created;
dateTime lastModified; }
string deviceName
string group
string planName
struct orderPlanConfigType { orderPlanType orderPlan;
orderPlanConfigCommand command; short sequenceNumber; }
string orderPlanConfigCommand
Thanks,
Bilig
--
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php