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