WSCOMUN  2.1.2
Web Services Comunes para PHP/GVHidra
WSClientDatosVehiculo.php
1 <?php
3 
5 use ArrayObject;
6 use DateTime;
7 use Exception;
8 use SoapVar;
9 
21 {
25  private static $NAMESPACE_ESP = 'http://intermediacion.redsara.es/scsp/esquemas/datosespecificos';
26  private static $NAMESPACE_PET = 'http://intermediacion.redsara.es/scsp/esquemas/V3/peticion';
27  private static $NAMESPACE_SR = 'http://intermediacion.redsara.es/scsp/esquemas/V3/solicitudRespuesta';
28 
29 
36  private function crearCliente() {
37  $opcionesClienteWS = array (
38  'soap_version' => SOAP_1_1, //SOAP 1.2
39  'user_agent' => 'WSSoapClient',
40  'exceptions' => true,
41  'cache_wsdl' => self::$MYSOAPOP_WSDL_CACHE,
42  'trace' => self::$MYSOAPOP_TRACE
43  );
44 
45  $this->__clienteOn(self::KEYCLIENTE_DGT_DATOSVEHICULO, true, $opcionesClienteWS);
46  $clienteWS = $this->__getClient(self::KEYCLIENTE_DGT_DATOSVEHICULO);
47 
48  return $clienteWS;
49  }
50 
51 
62  public function peticionSincrona($IdPeticion, $TimeStamp, $CodigoCertificado, $oSolicitud)
63  {
64  try
65  {
66  // Crea el cliente del WS
67  $clienteWS = $this->crearCliente();
68 
69  // Genera el SoapVar a enviar
70  $bodyWSRequest = $this->toSOAP_petSinc($IdPeticion, $TimeStamp, $CodigoCertificado, $oSolicitud);
71 
72  // Envio peticion
73  $miSoapRQ = new SoapVar($bodyWSRequest, SOAP_ENC_OBJECT,null,null,'Peticion', self::$NAMESPACE_PET);
74  $respuesta = $clienteWS->peticionSincrona($miSoapRQ);
75 
76  // TODO: CONVERTIR RESPUESTA EN OBJETO!!!
77 
78  // Respuesta
79  $vRespuesta = array();
80  if (is_object($respuesta))
81  {
82  $vRespuesta = array
83  (
84  'respuesta' => $respuesta
85  );
86  }
87  return($vRespuesta);
88  }
89  catch (Exception $e)
90  {
91  $this->tratarExcepcionEstandar($e, $clienteWS);
92  }
93  }//peticionSincrona
94 
95 
106  public function peticionAsincrona($IdPeticion, $TimeStamp, $CodigoCertificado, $vSolicitudes)
107  {
108  try
109  {
110  // Crea el cliente del WS
111  $clienteWS = $this->crearCliente();
112 
113  // Genera el SoapVar a enviar
114  $bodyWSRequest = $this->toSOAP_petAsinc($IdPeticion, $TimeStamp, $CodigoCertificado, $vSolicitudes);
115 
116  // Envio peticion
117  $miSoapRQ = new SoapVar($bodyWSRequest, SOAP_ENC_OBJECT,null,null, 'Peticion', self::$NAMESPACE_PET);
118  $respuesta = $clienteWS->peticionAsincrona($miSoapRQ);
119 
120  // TODO: CONVERTIR RESPUESTA EN OBJETO!!!
121 
122  // Respuesta
123  $vRespuesta = array();
124  if (is_object($respuesta))
125  {
126  $vRespuesta = array
127  (
128  'respuesta' => $respuesta
129  );
130  }
131  return($vRespuesta);
132  }
133  catch (Exception $e)
134  {
135  $this->tratarExcepcionEstandar($e, $clienteWS);
136  }
137  }//peticionAsincrona
138 
139 
150  public function solicitudRespuesta($IdPeticion, $TimeStamp, $CodigoCertificado, $NumElementos)
151  {
152  try
153  {
154  // Crea el cliente del WS
155  $clienteWS = $this->crearCliente();
156 
157  // Genera el SoapVar a enviar
158  $bodyWSRequest = $this->toSOAP_SR($IdPeticion, $TimeStamp, $CodigoCertificado, $NumElementos);
159 
160  // Envio peticion
161  $miSoapRQ = new SoapVar($bodyWSRequest, SOAP_ENC_OBJECT,null,null,'SolicitudRespuesta', self::$NAMESPACE_SR);
162  $respuesta = $clienteWS->solicitudRespuesta($miSoapRQ);
163 
164  // TODO: CONVERTIR RESPUESTA EN OBJETO!!!
165 
166  // Respuesta
167  $vRespuesta = array();
168  if (is_object($respuesta))
169  {
170  $vRespuesta = array
171  (
172  'respuesta' => $respuesta
173  );
174  }
175  return($vRespuesta);
176  }
177  catch (Exception $e)
178  {
179  $this->tratarExcepcionEstandar($e, $clienteWS);
180  }
181  }//solicitudRespuesta
182 
183 
195  private function toSOAP_atributos($idPeticion, $numElementos, $timestamp, $codigoCertificado, $ns) {
196  // Atributos
197  $AtrWSLvl = new ArrayObject();
198  $AtrWSLvl->append(new SoapVar($idPeticion, XSD_STRING, null, null,'IdPeticion', $ns));
199  $AtrWSLvl->append(new SoapVar($numElementos, XSD_INTEGER , null, null,'NumElementos', $ns));
200  $AtrWSLvl->append(new SoapVar($timestamp->format(DateTime::ATOM), XSD_STRING, null, null,'TimeStamp', $ns));
201  $AtrWSLvl->append(new SoapVar($codigoCertificado, XSD_STRING, null, null,'CodigoCertificado', $ns));
202 
203  return new SoapVar($AtrWSLvl, SOAP_ENC_OBJECT, null, null, 'Atributos', $ns);
204  }
205 
216  private function toSOAP_petSinc($IdPeticion, $TimeStamp, $CodigoCertificado, $oSolicitud)
217  {
218  // Atributos
219  $AtrSoapVar = $this->toSOAP_atributos($IdPeticion, 1, $TimeStamp, $CodigoCertificado, self::$NAMESPACE_PET);
220 
221  // SolicitudTransmision
222  $SolicitudTransmisionSoapVar = $oSolicitud->toSoap($IdPeticion, $CodigoCertificado, null);
223 
224  // Solicitudes
225  $SolicitudesWSRequest = new ArrayObject();
226  $SolicitudesWSRequest->append($SolicitudTransmisionSoapVar);
227 
228  // Body
229  $bodyWSRequest = new ArrayObject();
230  $bodyWSRequest->append($AtrSoapVar);
231  $bodyWSRequest->append(new SoapVar($SolicitudesWSRequest, SOAP_ENC_OBJECT, null, null, 'Solicitudes', self::$NAMESPACE_PET));
232 
233  return $bodyWSRequest;
234  } //toSOAP_petSinc
235 
236 
247  private function toSOAP_petAsinc($IdPeticion, $TimeStamp, $CodigoCertificado, $vSolicitudes)
248  {
249  // Cuenta el numero de solicitudes
250  $NumElementos = count($vSolicitudes);
251 
252  // Solicitudes
253  $SolicitudesWSRequest = new ArrayObject();
254 
255  for ($iPet=0; $iPet < $NumElementos; $iPet++) {
256  $oSolicitud = $vSolicitudes[$iPet];
257 
258  // SolicitudTransmision
259  $SolicitudTransmisionSoapVar = $oSolicitud->toSoap($IdPeticion, $CodigoCertificado, $iPet);
260 
261  // AƱade la solicitud de transmision al listado de solicitudes
262  $SolicitudesWSRequest->append($SolicitudTransmisionSoapVar);
263  }
264 
265  // Atributos
266  $AtrSoapVar = $this->toSOAP_atributos($IdPeticion, $NumElementos, $TimeStamp, $CodigoCertificado, self::$NAMESPACE_PET);
267 
268  // Body
269  $bodyWSRequest = new ArrayObject();
270  $bodyWSRequest->append($AtrSoapVar);
271  $bodyWSRequest->append(new SoapVar($SolicitudesWSRequest, SOAP_ENC_OBJECT,null,null,'Solicitudes', self::$NAMESPACE_PET));
272 
273  return $bodyWSRequest;
274  } //toSOAP_petAsinc
275 
286  private function toSOAP_SR($IdPeticion, $TimeStamp, $CodigoCertificado, $NumElementos)
287  {
288  // Atributos
289  $AtrSoapVar = $this->toSOAP_atributos($IdPeticion, $NumElementos, $TimeStamp, $CodigoCertificado, self::$NAMESPACE_SR);
290 
291  // Body
292  $bodyWSRequest = new ArrayObject();
293  $bodyWSRequest->append($AtrSoapVar);
294 
295  return $bodyWSRequest;
296  } //toSOAP_SR
297 
298 }
299 
300 ?>
peticionSincrona($IdPeticion, $TimeStamp, $CodigoCertificado, $oSolicitud)
solicitudRespuesta($IdPeticion, $TimeStamp, $CodigoCertificado, $NumElementos)
peticionAsincrona($IdPeticion, $TimeStamp, $CodigoCertificado, $vSolicitudes)
__clienteOn($tipo, $trazabilidadPai=true, $opcionesClienteWS=null)