Ver Mensaje Individual
  #9 (permalink)  
Antiguo 30/11/2010, 07:46
Avatar de Snaft_J1
Snaft_J1
 
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Como puedo ver el header enviado en soap?

hola, mira a continuación te posteo nuevamente el script inicial modificado para que puedas pasar un certificado y logres enviar una petición firmada, si gustas lo hacemos paso a paso, por ahora te pongo el script, espero cuentes con los certificados digitales y claves privadas para ello.

Código PHP:
Ver original
  1. <?php
  2. require('soap-wsse.php');
  3.  
  4. define('PRIVATE_KEY', './private.key');
  5. define('CERT_FILE', './cert.crt');
  6.  
  7. class mySoap extends SoapClient {
  8.  
  9.    function __doRequest($request, $location, $saction, $version) {
  10.     $doc = new DOMDocument('1.0');
  11.     $doc->loadXML($request);
  12.  
  13.     $objWSSE = new WSSESoap($doc);
  14.  
  15.     /* Marca de tiempo que expira luego de cinco minutos */
  16.     $objWSSE->addTimestamp(300);
  17.     /* Crear el objeto de seguridad, establece y carga la clave */
  18.     $objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array ('type'=>'private'));
  19.     $objKey->passphrase = 'YOUR_PASSWORD_HERE';
  20.     $objKey->loadKey(PRIVATE_KEY, TRUE);
  21.     /* Firmamos el mensaje */
  22.     $objWSSE->signSoapDoc($objKey);
  23.     /* Agregamos el certificado */
  24.     $token = $objWSSE->addBinaryToken(file_get_contents(CERT_FILE));
  25.     $objWSSE->attachTokentoSig($token);
  26.     // je je je Sacamos las headers :)
  27.     // echo $objWSSE->saveXML();
  28.  
  29.     return parent::__doRequest($objWSSE->saveXML(), $location, $saction, $version);
  30.    }
  31. }
  32.  
  33. // opciones de conexion
  34. $options = array(
  35.   'soap_version' => SOAP_1_1,
  36.   'local_cert' => CERT_FILE,
  37.   'connection_timeout' => 20,
  38.   'cache_wsdl' => WSDL_CACHE_NONE,
  39.   'exceptions' => true,
  40.   'user_agent' => 'mySoap',
  41.   'trace' => true,
  42. );  
  43.  
  44. $wsdl = 'https://devauth.utcc.utoronto.ca/wsbuild/services/1_0_0/PersonService?wsdl';
  45.  
  46. try {
  47.     $sClient = new mySoap($wsdl, $options);
  48.     ///$wrapper->credentials->personId = new SoapVar("9300002", XSD_STRING);
  49.     //$wrapper = parametros del metodo que estes llamando.
  50.     $result = $sClient->getEmail($wrapper);
  51.     print_r($result->return);
  52. } catch (SoapFault $fault) {
  53.     print("Fault string: " . $fault->faultstring . "\n");
  54.     print("Fault code: " . $fault->detail->WebServiceException->code . "\n");
  55. }
  56.  
  57. echo $sClient->__getLastRequest() . "\n" . $sClient->__getLastResponse();
  58. ?>

hasta alli bien es una primera etapa aun que es de notar que el script puede sufrir una pequeña variante dado el caso de que el metodo de transporte sea HTTP.

creo que vamos progresando jejejeje.

saludos y suerte.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....