¿Cómo llamar al método SOAP sobrecargado con PHP SoapClient?

Confluencia de jabón api Define dos métodos con el mismo nombre pero diferentes parámetros:

Página getPage (token de cadena, pageId largo): devuelve una sola página (según la documentación, el segundo parámetro es String, pero en WSDL es largo)Página getPage (token de cadena, String spaceKey, String pageTitle): devuelve una sola página

Necesitaría llamar al método con dos parámetros usando PHP SoapClient. En el modo WSDL, SoapClient insiste en usar el parámetro de tres parámetros. En modo no WSDL logré hacer una llamada con dos parámetros, pero no puedo hacer que el tipo del segundo parámetro sea largo. ¿Cómo puedo hacer que SoapClient llame a getPage con dos parámetros con los tipos correctos?

Esto es lo que he hecho hasta ahora:

Usando SoapClient en modo WSDL ...

$soapClient = new SoapClient("http://xxx/confluence/rpc/soap-axis/confluenceservice-v1?wsdl", array("trace" => TRUE));
$token = $soapClient->login(CONFLUENCE_USERNAME, CONFLUENCE_PASSWORD);
$page = $soapClient->getPage($token, $confluence_article_id);

... produce una solicitud para el método de tres parámetros (solo se muestra el cuerpo) ...

<SOAP-ENV:Body><ns1:getPage><in0 xsi:type="xsd:string">dkjLIx00Ap</in0><in1 xsi:type="xsd:string">24445207</in1><in2 xsi:nil="true"/></ns1:getPage></SOAP-ENV:Body>

... lo que causa la falla:

<faultstring>com.atlassian.confluence.rpc.RemoteException: You're not allowed to view that page, or it does not exist.</faultstring>

La página con ese ID existe y se me permite verlo, lo cual puedo confirmar haciendo el tipo correcto de solicitud con SoapUI.

Usar SoapClient es un modo no WSDL ...

$soapClient = new SoapClient(null, array(
    "location" => "http://xxx/confluence/rpc/soap-axis/confluenceservice-v1",
    "uri" => "http://soap.rpc.confluence.atlassian.com",
    "trace" => TRUE));
$token = $soapClient->login(CONFLUENCE_USERNAME, CONFLUENCE_PASSWORD);
$page = $soapClient->getPage($token, $confluence_article_id);

... produce una solicitud para el método de dos parámetros con un tipo incorrecto para el segundo parámetro. Cuando $ confluence_article_id es una cadena, la solicitud es ...

<SOAP-ENV:Body><ns1:getPage><param0 xsi:type="xsd:string">8Or94ZLqe7</param0><param1 xsi:type="xsd:string">24445207</param1></ns1:getPage></SOAP-ENV:Body>

... que devuelve el mismo error que el anterior:

<faultstring>com.atlassian.confluence.rpc.RemoteException: You're not allowed to view that page, or it does not exist.</faultstring>

Cuando $ confluence_article_id es entero, la solicitud es ...

<SOAP-ENV:Body><ns1:getPage><param0 xsi:type="xsd:string">y0kF4z0m9L</param0><param1 xsi:type="xsd:int">24445207</param1></ns1:getPage></SOAP-ENV:Body>

... lo que devuelve un tipo diferente de falla:

<faultstring>org.xml.sax.SAXException: Bad types (int -> class java.lang.String)</faultstring>

Si tomo la solicitud, cambio int por mucho tiempo y lo pruebo con SoapUI, funciona bien.

También traté de llamarlo usando __soapCall, pero los resultados son similares:

$page = $soapClient -> __soapCall('getPage', array('in0'=>$token,'in1'=>$confluence_article_id));

Hay un PHP relacionadoinforme de error&nbsp;yotroyDiscusión en los foros de Atlassian., pero ninguno de ellos me ayudó.

Hasta ahora, la mejor sugerencia ha sido modificar el WSDL eliminando la otra definición de getPage y guardándola localmente en algún lugar.