Pregunta

Este es el código que estoy usando para generar las cabeceras de petición:

$headers = array(
                  new SOAPHEADER($this->_ns,'username',$this->_username,false, $this->_actor),
                  new SOAPHEADER($this->_ns,'password',$this->_password,false, $this->_actor));

$this->_client->__setSOAPHeaders($headers);

Esto genera:

<SOAP-ENV:Header>
  <ns2:username SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">test</ns2:username>
  <ns2:password SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">test</ns2:password>
</SOAP-ENV:Header>

Eso es todo lo fino y elegante.

Aquí están mis dos preguntas:

La documentación del API requiere que sea nombre de usuario ns1: nombre de usuario y la contraseña será ns2: contraseña . Los míos son tanto ns2. En primer lugar, ¿cuál es el significado de la NS1 | 2? ¿Cómo puedo solucionar este problema?

La segunda pregunta es ¿hay alguna manera de generar el mismo resultado solamente llamando SoapHeader () una vez?

¿Fue útil?

Solución

  1. No es fácil decir si el espacio de nombres hace una diferencia sin ver la declaración y conociendo el servicio, pero por lo general el servicio de recepción se ve sólo de las variables en ese espacio de nombres particular. A medida que agrega $this->_ns a ambos, por supuesto que va a ser el mismo. Usted tendrá que proporcionar el espacio de nombres adecuado a sí mismo (prefijo no importa, URI).
  2. ¿Por qué quieres a sólo 1 llamada?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top