Foros del Web » Programando para Internet » PHP »

NUSOAP ¿Actualizar WSDL?

Estas en el tema de NUSOAP ¿Actualizar WSDL? en el foro de PHP en Foros del Web. Hola. Tengo que consumir un servicio web de una aseguradora y me decidí por usar NUSOAP. La primera vez que realicé una prueba pude consumir ...
  #1 (permalink)  
Antiguo 23/12/2011, 14:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
NUSOAP ¿Actualizar WSDL?

Hola.

Tengo que consumir un servicio web de una aseguradora y me decidí por usar NUSOAP. La primera vez que realicé una prueba pude consumir el servicio sin problemas, pero posteriormente hicieron un cambio, quitaron un parámetro de tipo número y lo sustituyeron por otro de tipo string.

El caso es que ahora al consumir el ws me da un error de que me falta un parámetro que sí le estoy dando, y al comunicarme con la empresa que provee el servicio me dicen que el ws está bien, que yo tengo que actualizar el link del wsdl; entendí que según ellos yo debo decirle a mi sistema que actualice la descripción del ws para que tome los cambios.

Yo no creo que sea necesario, puesto que al crear mi array de datos con los cambios indicados el sistema de ellos debería tomar los cambios y no yo, pero el caso es que estoy temporalmente bloqueado en esto.

¿Alguien que haya tenido un problema similar me puede indicar si hay manera de "actualizar" el wsdl con NUSOAP?
  #2 (permalink)  
Antiguo 23/12/2011, 14:18
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: NUSOAP ¿Actualizar WSDL?

Pues si llega a pasar y hay que actualizar el XML....

Lo mas fácil y rápido es que borres la carpeta de nusoap. Te bajas el paquete nuevo y sin usar y lo desempaquetas, mételo de nuevo a tu servidor y ya está.

Prueba con eso.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 23/12/2011, 14:48
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: NUSOAP ¿Actualizar WSDL?

Gracias por responder.

Pues ya lo hice y sigo igual :( en fin, habrá que hacer más pruebas y si no insistir en que revisen ellos su sistema.
  #4 (permalink)  
Antiguo 23/12/2011, 15:00
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: NUSOAP ¿Actualizar WSDL?

me temo que sí. Si no te ha servido de esta manera es muy probable que no sea error tuyo. Ya has actualizado el WSDL, al cambiar de paquete nusoap y hacer la instancia de la clase nusoap, volviste a crear el XML que comunica con el webservice.

La empresa podría estar trabajando con algún lenguaje distinto a PHP, por ello el servicio te exige que mandes el tipo de dato correcto.

Arriba comentas que te tira un error diciendo que falta un parámetro.

Me deja un poco intrigado y te comento lo siguiente por cualquier cosa.

Es un estandar en los lenguajes de programación, que si no deseas especificar el primero, segundo, o n parámetro de un método los marques como NULL para poder utilizar el n+1 parámetro.

Por ejemplo si yo tengo este metodo

miMetodo(int a, String b){

}

Y por ahora solo quiero mandar un tipo de dato String haré lo siguiente:

miMetodo(null, "MICADENA123123");

==============================

Te lo comento por que no se si esto es lo que esté pasando.

Puede que el servicio no haya cambiado el tipo de dato que recibe si no el orden en el que lo recibe.
--------------------------------

Otra cosa que se me acaba de ocurrir es esto:

tal vez el metodo del servicio ahora reciba un tipo String. Antes comentaste que recibían un INT entonces yo pienso que el método del servicio se verá como sigue:


metodoDelServicio(String cadena){

}

Y tu estas mandando de la siguiente manera:

metodoDelServicio(12334245436534);

Entonces lo que debes hacer es encerrar tu cadena de numeros en comillas, para que esta se convierta en un tipo de dato String.

Otra cosa que se me puede ocurrir para que pruebes es:

metodoDelServicio((string) "1231232435");


Pues no esta por demás, pero has las pruebas y nos comentas.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 23/12/2011, 15:53
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: NUSOAP ¿Actualizar WSDL?

Nuevamente gracias por tus comentarios.

El parámetro int era la duración del seguro (6 o 12 meses) y ahora cambió por un código de activación opcional, tipo string, que yo dejo como "authorizationNumber"=>"".

Ellos usan asp.

He seguido la descripción del wsdl de su página, por lo que no creo que sea problema del orden de los parámetros.

Trasteando un poco con la estructura que envío, me doy cuenta que mi primer prueba omitía el nombre de un arreglo, en vez de hacer "Equipment"=>array( yo hacía directamente array( por lo que corregida la estructura, lo vuelvo a probar y ahora recibo este error:
Server was unable to process request. ---> System.Data.SqlClient.SqlException: @saleType is not a parameter for procedure stp_seguMovil.

Esto tengo entendido es que el ws está tratando de llamar un método que no existe en el sistema del servidor.

Aunque ya he implementado antes servidor y cliente con NUSOAP y ha funcionado, lo he hecho siempre sobre php. supongo que no debería haber diferencia con el servidor ASP, pero la verdad es que con éste último error no estoy muy seguro, y ya no quiero estar llamando tantas veces a esta empresa pudiendo ser error mío.
  #6 (permalink)  
Antiguo 23/12/2011, 16:19
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: NUSOAP ¿Actualizar WSDL?

Oh ya,

Puede que sea error tuyo sabes, lo que puede estar pasando es que el srvicio coge un elemento de tu array asociativo y espera que sea un parametro, entonces puede que estes escribiendo mal el elemento que metes dentro de tu array y por eso el servicio no lo encuentra como nombre de parametro, segun la excepcion dice que metodo si lo encuentra lo que no ncuentra es el parametro saleType.

Ellos deverian ser mas amables y ayudarte a corregir el problema, por que no se los propones que alguien de ellos te heche una mano con teamviewer.

Hay que hacer un poco mas de pruebas, tambien podrias decirme que webservice esas consumiendo y asi me informo mas e igual y al rato pegas un fragmento de tu codigo y encuentro el detalle.

Un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #7 (permalink)  
Antiguo 23/12/2011, 16:43
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: NUSOAP ¿Actualizar WSDL?

Este es el wsdl, cambié los http por aquello de las "políticas de privacidad" de la empresa que nos va a dar el ws, pero lo demás está intacto.

Lo pondré en dos partes por que excede por poco el límite del post
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://hola.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://hola.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  3.   <wsdl:types>
  4.     <s:schema elementFormDefault="qualified" targetNamespace="http://hola.com/">
  5.       <s:element name="getPolicy">
  6.         <s:complexType>
  7.           <s:sequence>
  8.             <s:element minOccurs="0" maxOccurs="1" name="policyInfo" type="tns:PolicyInfo"/>
  9.           </s:sequence>
  10.         </s:complexType>
  11.       </s:element>
  12.       <s:complexType name="PolicyInfo">
  13.         <s:sequence>
  14.           <s:element minOccurs="0" maxOccurs="1" name="user" type="s:string"/>
  15.           <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
  16.           <s:element minOccurs="1" maxOccurs="1" name="partnerId" type="s:int"/>
  17.           <s:element minOccurs="1" maxOccurs="1" name="saleDate" type="s:dateTime"/>
  18.           <s:element minOccurs="0" maxOccurs="1" name="saleID" type="s:string"/>
  19.           <s:element minOccurs="0" maxOccurs="1" name="salePoint" type="s:string"/>
  20.           <s:element minOccurs="0" maxOccurs="1" name="authorizationNumber" type="s:string"/>
  21.           <s:element minOccurs="0" maxOccurs="1" name="Client" type="tns:Client"/>
  22.           <s:element minOccurs="0" maxOccurs="1" name="Equipment" type="tns:Equipment"/>
  23.         </s:sequence>
  24.       </s:complexType>
  25.       <s:complexType name="Client">
  26.         <s:sequence>
  27.           <s:element minOccurs="0" maxOccurs="1" name="firstName" type="s:string"/>
  28.           <s:element minOccurs="0" maxOccurs="1" name="lastName" type="s:string"/>
  29.           <s:element minOccurs="0" maxOccurs="1" name="maidenName" type="s:string"/>
  30.           <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string"/>
  31.           <s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:Address"/>
  32.         </s:sequence>
  33.       </s:complexType>
  34.       <s:complexType name="Address">
  35.         <s:sequence>
  36.           <s:element minOccurs="0" maxOccurs="1" name="street" type="s:string"/>
  37.           <s:element minOccurs="1" maxOccurs="1" name="number" type="s:int"/>
  38.           <s:element minOccurs="0" maxOccurs="1" name="neighborhood" type="s:string"/>
  39.           <s:element minOccurs="0" maxOccurs="1" name="city" type="s:string"/>
  40.           <s:element minOccurs="0" maxOccurs="1" name="state" type="s:string"/>
  41.           <s:element minOccurs="1" maxOccurs="1" name="zip" type="s:int"/>
  42.         </s:sequence>
  43.       </s:complexType>
  44.       <s:complexType name="Equipment">
  45.         <s:sequence>
  46.           <s:element minOccurs="1" maxOccurs="1" name="value" type="s:decimal"/>
  47.           <s:element minOccurs="0" maxOccurs="1" name="make" type="s:string"/>
  48.           <s:element minOccurs="0" maxOccurs="1" name="model" type="s:string"/>
  49.           <s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string"/>
  50.           <s:element minOccurs="0" maxOccurs="1" name="number" type="s:string"/>
  51.         </s:sequence>
  52.       </s:complexType>
  53.       <s:element name="getPolicyResponse">
  54.         <s:complexType>
  55.           <s:sequence>
  56.             <s:element minOccurs="0" maxOccurs="1" name="getPolicyResult" type="tns:TransactionResult"/>
  57.           </s:sequence>
  58.         </s:complexType>
  59.       </s:element>
  60.       <s:complexType name="TransactionResult">
  61.         <s:sequence>
  62.           <s:element minOccurs="1" maxOccurs="1" name="saleId" type="s:int"/>
  63.           <s:element minOccurs="1" maxOccurs="1" name="saleId2" type="s:int"/>
  64.           <s:element minOccurs="0" maxOccurs="1" name="errorMsg" type="s:string"/>
  65.           <s:element minOccurs="0" maxOccurs="1" name="policyNumber" type="s:string"/>
  66.           <s:element minOccurs="0" maxOccurs="1" name="policyPDF" type="s:string"/>
  67.           <s:element minOccurs="0" maxOccurs="1" name="netPremium" type="s:string"/>
  68.           <s:element minOccurs="0" maxOccurs="1" name="vat" type="s:string"/>
  69.           <s:element minOccurs="0" maxOccurs="1" name="total" type="s:string"/>
  70.           <s:element minOccurs="0" maxOccurs="1" name="policyNumber2" type="s:string"/>
  71.           <s:element minOccurs="0" maxOccurs="1" name="policyPDF2" type="s:string"/>
  72.           <s:element minOccurs="0" maxOccurs="1" name="netPremium2" type="s:string"/>
  73.           <s:element minOccurs="0" maxOccurs="1" name="vat2" type="s:string"/>
  74.           <s:element minOccurs="0" maxOccurs="1" name="total2" type="s:string"/>
  75.         </s:sequence>
  76.       </s:complexType>
  77.       <s:element name="getVoluntaryPolicy">
  78.         <s:complexType>
  79.           <s:sequence>
  80.             <s:element minOccurs="0" maxOccurs="1" name="policyInfo" type="tns:PolicyInfo"/>
  81.           </s:sequence>
  82.         </s:complexType>
  83.       </s:element>
  84.       <s:element name="getVoluntaryPolicyResponse">
  85.         <s:complexType>
  86.           <s:sequence>
  87.             <s:element minOccurs="0" maxOccurs="1" name="getVoluntaryPolicyResult" type="tns:TransactionResult"/>
  88.           </s:sequence>
  89.         </s:complexType>
  90.       </s:element>
  91.       <s:element name="GetpolicyUrl">
  92.         <s:complexType>
  93.           <s:sequence>
  94.             <s:element minOccurs="1" maxOccurs="1" name="saleId" type="s:int"/>
  95.           </s:sequence>
  96.         </s:complexType>
  97.       </s:element>
  98.       <s:element name="GetpolicyUrlResponse">
  99.         <s:complexType>
  100.           <s:sequence>
  101.             <s:element minOccurs="0" maxOccurs="1" name="GetpolicyUrlResult" type="s:string"/>
  102.           </s:sequence>
  103.         </s:complexType>
  104.       </s:element>
  105.     </s:schema>
  106.   </wsdl:types>
  #8 (permalink)  
Antiguo 23/12/2011, 16:46
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: NUSOAP ¿Actualizar WSDL?

Código XML:
Ver original
  1. <wsdl:message name="getPolicySoapIn">
  2.     <wsdl:part name="parameters" element="tns:getPolicy"/>
  3.   </wsdl:message>
  4.   <wsdl:message name="getPolicySoapOut">
  5.     <wsdl:part name="parameters" element="tns:getPolicyResponse"/>
  6.   </wsdl:message>
  7.   <wsdl:message name="getVoluntaryPolicySoapIn">
  8.     <wsdl:part name="parameters" element="tns:getVoluntaryPolicy"/>
  9.   </wsdl:message>
  10.   <wsdl:message name="getVoluntaryPolicySoapOut">
  11.     <wsdl:part name="parameters" element="tns:getVoluntaryPolicyResponse"/>
  12.   </wsdl:message>
  13.   <wsdl:message name="GetpolicyUrlSoapIn">
  14.     <wsdl:part name="parameters" element="tns:GetpolicyUrl"/>
  15.   </wsdl:message>
  16.   <wsdl:message name="GetpolicyUrlSoapOut">
  17.     <wsdl:part name="parameters" element="tns:GetpolicyUrlResponse"/>
  18.   </wsdl:message>
  19.   <wsdl:portType name="AceSeguMovilActivatePolicySoap">
  20.     <wsdl:operation name="getPolicy">
  21.       <wsdl:input message="tns:getPolicySoapIn"/>
  22.       <wsdl:output message="tns:getPolicySoapOut"/>
  23.     </wsdl:operation>
  24.     <wsdl:operation name="getVoluntaryPolicy">
  25.       <wsdl:input message="tns:getVoluntaryPolicySoapIn"/>
  26.       <wsdl:output message="tns:getVoluntaryPolicySoapOut"/>
  27.     </wsdl:operation>
  28.     <wsdl:operation name="GetpolicyUrl">
  29.       <wsdl:input message="tns:GetpolicyUrlSoapIn"/>
  30.       <wsdl:output message="tns:GetpolicyUrlSoapOut"/>
  31.     </wsdl:operation>
  32.   </wsdl:portType>
  33.   <wsdl:binding name="AceSeguMovilActivatePolicySoap" type="tns:AceSeguMovilActivatePolicySoap">
  34.     <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
  35.     <wsdl:operation name="getPolicy">
  36.       <soap:operation soapAction="http://hola.com/getPolicy" style="document"/>
  37.       <wsdl:input>
  38.         <soap:body use="literal"/>
  39.       </wsdl:input>
  40.       <wsdl:output>
  41.         <soap:body use="literal"/>
  42.       </wsdl:output>
  43.     </wsdl:operation>
  44.     <wsdl:operation name="getVoluntaryPolicy">
  45.       <soap:operation soapAction="http://hola.com/getVoluntaryPolicy" style="document"/>
  46.       <wsdl:input>
  47.         <soap:body use="literal"/>
  48.       </wsdl:input>
  49.       <wsdl:output>
  50.         <soap:body use="literal"/>
  51.       </wsdl:output>
  52.     </wsdl:operation>
  53.     <wsdl:operation name="GetpolicyUrl">
  54.       <soap:operation soapAction="http://hola.com/GetpolicyUrl" style="document"/>
  55.       <wsdl:input>
  56.         <soap:body use="literal"/>
  57.       </wsdl:input>
  58.       <wsdl:output>
  59.         <soap:body use="literal"/>
  60.       </wsdl:output>
  61.     </wsdl:operation>
  62.   </wsdl:binding>
  63.   <wsdl:binding name="AceSeguMovilActivatePolicySoap12" type="tns:AceSeguMovilActivatePolicySoap">
  64.     <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
  65.     <wsdl:operation name="getPolicy">
  66.       <soap12:operation soapAction="http://hola.com/getPolicy" style="document"/>
  67.       <wsdl:input>
  68.         <soap12:body use="literal"/>
  69.       </wsdl:input>
  70.       <wsdl:output>
  71.         <soap12:body use="literal"/>
  72.       </wsdl:output>
  73.     </wsdl:operation>
  74.     <wsdl:operation name="getVoluntaryPolicy">
  75.       <soap12:operation soapAction="http://hola.com/getVoluntaryPolicy" style="document"/>
  76.       <wsdl:input>
  77.         <soap12:body use="literal"/>
  78.       </wsdl:input>
  79.       <wsdl:output>
  80.         <soap12:body use="literal"/>
  81.       </wsdl:output>
  82.     </wsdl:operation>
  83.     <wsdl:operation name="GetpolicyUrl">
  84.       <soap12:operation soapAction="http://hola.com/GetpolicyUrl" style="document"/>
  85.       <wsdl:input>
  86.         <soap12:body use="literal"/>
  87.       </wsdl:input>
  88.       <wsdl:output>
  89.         <soap12:body use="literal"/>
  90.       </wsdl:output>
  91.     </wsdl:operation>
  92.   </wsdl:binding>
  93.   <wsdl:service name="AceSeguMovilActivatePolicy">
  94.     <wsdl:port name="AceSeguMovilActivatePolicySoap" binding="tns:AceSeguMovilActivatePolicySoap">
  95.       <soap:address location="http://hola/AceSeguMovilActivatePolicy.asmx"/>
  96.     </wsdl:port>
  97.     <wsdl:port name="AceSeguMovilActivatePolicySoap12" binding="tns:AceSeguMovilActivatePolicySoap12">
  98.       <soap12:address location="http://hola/AceSeguMovilActivatePolicy.asmx"/>
  99.     </wsdl:port>
  100.   </wsdl:service>
  101. </wsdl:definitions>

Y mi estructura en php es la siguiente:

Código PHP:
Ver original
  1. $param=array("policyInfo"=>array("user"=>"demo","password"=>"demo","partnerId"=>"9999","saleDate"=>"2011-12-22T12:00:00","saleID"=>"XCDI-9876","salePoint"=>"P. venta x","authorizationNumber"=>"74AD1400","Client"=>array(
  2.     "firstName"=>"Juan","lastName"=>"Perez","maidenName"=>"Diaz","email"=>"[email protected]","Address"=>array(
  3.         "street"=>"20 Nov.","number"=>374,"neighborhood"=>"Centro","city"=>"Detroit","state"=>"Michigan","zip"=>91999
  4.     )
  5. ),"Equipment"=>array(
  6.     "value"=>1999.99,"make"=>"Sony Ericsson","model"=>"W580","ID"=>"012345678901234568","number"=>"0442281818181"
  7.     )
  8. ));

En el wsdl, no veo por ningún lado el saleType, ni como entrada ni como salida, y me da el mismo error con cualquier método que quiera llamar, ya sea el getVoluntaryPolicy o el getPolicy

Lo peor del caso es que antes de que hicieran el cambio de la dirección en meses por el numero de autorización funcionó perfectamente las pruebas que hice.

Y según los que me atendieron de la aseguradora sólo saben ASP, nada de php.
  #9 (permalink)  
Antiguo 23/12/2011, 23:13
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: NUSOAP ¿Actualizar WSDL?

Oh ok, bueno estoy revisando... Si me puedes contar detalles como cuando fue que te dejo de funcionar, cual es el valor que ahora debe ser tipo string, que cambios has hecho y eso yo creo que lo andamos solucionando he, un saludo.


......edito 1
Fijate que ya estoy comenzando, podria haber algunos errores, por ejemplo enel xml dices que el name demcomplexType es PolicyInfo y en el array php lo estas apuntando como policyInfo, la p en minusculas.

Igual y el servicio hace un ignore case, o transforma todo a minusculas, si es asi no habra problema, pero si no eventualmente esto sugiere un conflicto, seguire revisando...
---------------------------


EDICION FINAL:

De acuerdo con la estructura de tu XML el consumo del servicio deberías hacerlo de la siguiente manera:

Código PHP:
Ver original
  1. //De acuerdo a la estructura XML de tu WSDL debería tener está forma:
  2. $param= array("PolicyInfo" => array("user"=>"","password"=>"","partnerId"=>1234,"saleDate"=>date(""),"saleID"=>"","salePoint"=>"","authorizationNumber"=>"",
  3.             "Client"=> array("firstName"=>"","lastName"=>"","maidenName"=>"","email"=>"",
  4.                     "Address"=>array("street"=>"","number"=>12345,"neighborhood"=>"","city"=>"","state"=>"","zip"=>12345))),
  5.             "Equipment"=>array("value"=>123.33,"make"=>"","model"=>"","ID"=>"","number"=>"")
  6.     );
  7.  
  8. //REPASANDO como se construyo el array hasta llegar al resultado final.
  9. $param = array("PolicyInfo"=>array(),"Equipment"=>array());
  10.  
  11. // 2
  12. $param = array( "PolicyInfo"=>
  13.                         array(  "user"=>"","password"=>"","partnerId"=>1234,"saleDate"=>date(""),"saleID"=>"","salePoint"=>"","authorizationNumber"=>"",
  14.                                 "Client"=>array()),
  15.    
  16.                 "Equipment"=>array("value"=>123.33,"make"=>"","model"=>"","ID"=>"","number"=>""));
  17.  
  18. // 3
  19. $param = array( "PolicyInfo"=>
  20.                         array(  "user"=>"","password"=>"","partnerId"=>1234,"saleDate"=>date(""),"saleID"=>"","salePoint"=>"","authorizationNumber"=>"",
  21.                                 "Client"=>
  22.                                         array(  "firstName"=>"","lastName"=>"","maidenName"=>"","email"=>"",
  23.                                                 "Address"=>array())),
  24.    
  25.                 "Equipment"=>array("value"=>123.33,"make"=>"","model"=>"","ID"=>"","number"=>""));
  26.  
  27. // 4 = Resultado final.
  28. $param = array( "PolicyInfo"=>
  29.                         array(  "user"=>"","password"=>"","partnerId"=>1234,"saleDate"=>date(""),"saleID"=>"","salePoint"=>"","authorizationNumber"=>"",
  30.                                 "Client"=>
  31.                                         array(  "firstName"=>"","lastName"=>"","maidenName"=>"","email"=>"",
  32.                                                 "Address"=>
  33.                                                                array("street"=>"","number"=>12345,"neighborhood"=>"","city"=>"","state"=>"","zip"=>12345))),
  34.    
  35.                 "Equipment"=>array("value"=>123.33,"make"=>"","model"=>"","ID"=>"","number"=>""));
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 23/12/2011 a las 23:48
  #10 (permalink)  
Antiguo 24/12/2011, 21:58
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: NUSOAP ¿Actualizar WSDL?

Hola. Gracias por responder y tu paciencia.

Con respecto a lo que me dices en el edit 1, con que el el dato debería ser PolicyInfo, si te fijas en:
Código XML:
Ver original
  1. <s:element name="getVoluntaryPolicy">
  2.         <s:complexType>
  3.           <s:sequence>
  4.             <s:element minOccurs="0" maxOccurs="1" name="policyInfo" type="tns:PolicyInfo"/>
  5.           </s:sequence>
  6.         </s:complexType>
  7.       </s:element>

Pese a que la estructura a enviar es del tipo PolicyInfo, en el "name" indica que se debe llamar policyInfo. De todos modos antes de preguntar aquí, probé de ambas maneras, y cuando la indico como PolicyInfo, el servidor me responde que no está recibiendo correctamente el objeto, mientras que si la indico como policyInfo me marca el último error indicado, con lo del saletype. Ya probé cambiando y omitiendo variable por variable, y colocando los valores tanto en string como en número (aquellos que son numéricos, claro), pude ver que me iba dando el error de cada variable, hasta que al colocar todos los valores como deberían me marca el error extraño.

En fin, ya volví a enviar mi petición de ayuda indicando el último error y todo con lujo de detalles, a ver si hay suerte.

Respecto a cómo dejó de funcionar, sucede lo siguiente:

Un cliente nos pidió un pequeño sitio web con interfaz vía ws con la aseguradora. Hice una prueba simple con datos fijos y el ws funcionó bien, así que comencé a desarrollar el sitio (inscripción de usuarios, login, formularios etc). Mientras hacía esto el cliente hizo algunos acuerdos y cambios con la aseguradora por lo que tres semanas después me mandaron la nueva especificación del ws, con la novedad de que ahora serían dos métodos en vez de uno, y con el único cambio de que en vez de manejar el campo de la duración del seguro ahora sería un código de activación o autorización. No vi ningún problema en ello y me puse a la tarea, con la sorpresa de que ahora ya no funciona.

En fin, cosas de la vida. Nuevamente gracias.
  #11 (permalink)  
Antiguo 26/12/2011, 00:20
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: NUSOAP ¿Actualizar WSDL?

Oh ya veo, supongo que Sera de esos dolores de cabeza que de momento se ven imposibles de resolver, pero ya llegara el momento en el que lo resolveras y diras - sape por menso - jaja ( asi le hago yo) jajaja, con la diferencia que es mas probable que el sape se lo des a la gente del ws. Espero encuentres solucion pronto amigo, un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: nusoap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:26.