Parece que no puedo encontrar la manera de establecer un atributo para una solicitud SOAP sin usar la codificación XSD_ANYXML.Solicitud SOAP con el atributo
El parámetro de la petición debe ser el siguiente
<request
xmlns:ns="/some/ns">
...
<ns:parameter attr="some attribute">
value
</ns:parameter>
...
</request>
Por supuesto funciona el siguiente código, pero es bastante feo (feo, ya que utiliza la concatenación de cadenas donde debe utilizar la API SOAP_Client y porque lo hace no utilice el espacio de nombres en general)
$param = new SoapVar(
'<ns_xxx:parameter xmlns:ns_xxx="/some/ns" attr="some attribute">
value
</ns_xxx:parameter>',
XSD_ANYXML
);
¿hay una mejor manera de crear un parámetro de la petición SOAP con un espacio de nombres y un atributo?
Estoy buscando el.h. como la siguiente (esto es sólo un pseudo código usando la API SoapVar):
$param = new SoapVar(
array(
'_' => 'value',
'attr' => 'some attribute'
),
SOME_ENCODING,
null,
null,
null,
'/some/ns'
);
No soy tan versado en SOAP como quiero, pero ¿admite solicitudes con atributos? (Sé que el WSDL tiene atributos, pero ¿cómo maneja los atributos en el XML que se le envía?) ¿Está creando el servicio o ya está configurado? Si es su servicio, soltaría la parte de atributo y la movería a su propio elemento dentro del parámetro. Tal vez como un elemento sin valor, como ' ' –
Anthony
@Anthony: desafortunadamente no controlo el servidor SOAP y no tengo influencia sobre la definición del servicio; (de lo contrario, por supuesto, podría simplemente convertir el atributo en un elemento –