You probably want to try SoapVar instead of SoapParam if you want to specify attributes/namespace.
SoapParam::SoapParam
(PHP 5 >= 5.0.1)
SoapParam::SoapParam — Constructor de SoapParam
Descripción
Construye un nuevo objecto SoapParam.
Parámetros
-
data -
Los datos a pasar o devolver. Este parámetro puede ser pasado directamente como valor PHP, pero en este caso será nombrado como paramN y el servicio SOAP quizá no lo entiende.
-
name -
Nombre del parámetro.
Ejemplos
Ejemplo #1 Ejemplo de SoapParam::SoapParam()
<?php
$client = new SoapClient(null,array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$client->SomeFunction(new SoapParam($a, "a"),
new SoapParam($b, "b"),
new SoapParam($c, "c"));
?>
Ver también
- SoapClient::__soapCall() - Llama a una función SOAP
- SoapVar::SoapVar() - Constructor de SoapVar
Alex ¶
3 years ago
Alex ¶
3 years ago
Make sure to always cast your parameters prior to creating a SoapParam. Otherwise you will wind up with an incorrect xsi:type and possibly no value.
$value = 0;
$param0 = new SoapParam(
$value, $param0_name);
will give you:
<$param0_name xsi:type="xsd:null"></$param0_name>
while:
$value = 0;
$param0 = new SoapParam(
(int)$value, $param0_name);
<$param0_name xsi:type="xsd:int">0</$param0_name>
which is probably what you want.
barryking93 at gmail dot com ¶
5 years ago
You have to use SoapVar instead of SoapParam if you want it to do something fancy like using different opening and closing tags. I ran into this using the SOAP API for Zimbra.
Jeremy ¶
5 years ago
Is there anyway to create a SOAP parameter like:
<a n="something">DATA</a>
If I try to form a param using the following code the resulting request is:
Code: SoapParam("DATA", "a n=\"something\"");
Result: <a n="something">DATA</a n="something">
This is giving me an error from the SOAP server because its expecting a properly formed closing tag without the encapsulated attribute.
