PHP - Webservice de envíos - extraer la informacion de una clase

 
Vista:
sin imagen de perfil

Webservice de envíos - extraer la informacion de una clase

Publicado por Fernando (14 intervenciones) el 17/07/2017 21:56:18
Buenas tardes,

Estoy programando un Webservice en PHP, consigo el resultado que es el siguiente:

stdClass Object ( [ExecuteQueryResult] => stdClass Object ( [errorCode] => 0 [errorCodeDescriptionSPA] => [errorCodeDescriptionENG] => [trackingData] => stdClass Object ( [TrackingData] => stdClass Object ( [waybill] => 8055241528464720099314 [shortWaybillId] => 3390363075 [serviceId] => 72 [serviceDescriptionSPA] => Servicio Terrestre Prepagado sin credito [serviceDescriptionENG] => Servicio Terrestre Prepagado sin credito [customerNumber] => 5241528 [packageType] => Paquete [additionalInformation] => [statusSPA] => CONFIRMADO [statusENG] => DELIVERED [pickupData] => stdClass Object ( [originAcronym] => MRL [originName] => Moroléon [pickupDateTime] => 07/02/2017 06:36:00 p.m. ) [deliveryData] => stdClass Object ( [destinationAcronym] => CUL [destinationName] => Culiacán [deliveryDateTime] => 13/02/2017 12:22:00 p.m. [zipCode] => 80240 [receiverName] => SOE: MARIA GAXIOLA ) [history] => stdClass Object ( [History] => Array ( [0] => stdClass Object ( [eventDateTime] => 29/08/2013 06:42:00 a.m. [eventId] => SCON [eventDescriptionSPA] => Llegada a centro de distribución MEXICO D.F. [eventDescriptionENG] => Exit of Container MEXICO D.F. [eventPlaceAcronym] => MEX [eventPlaceName] => MEXICO D.F. [exceptionCode] => [exceptionCodeDescriptionSPA] => [exceptionCodeDescriptionENG] => [exceptionCodeDetails] => ) [1] => stdClass Object ( [eventDateTime] => 29/08/2013 08:32:00 a.m. [eventId] => ECON [eventDescriptionSPA] => En proceso de entrega MEXICO D.F. [eventDescriptionENG] => Entry to LOCAL Container MEXICO D.F. [eventPlaceAcronym] => MEX [eventPlaceName] => MEXICO D.F. [exceptionCode] => [exceptionCodeDescriptionSPA] => [exceptionCodeDescriptionENG] => [exceptionCodeDetails] => ) ) ) ) ) ) )

Pero al ser clases no puedo extraer la informacion que necesito.

Este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
$client = new SoapClient('https://trackingqa.estafeta.com/Service.asmx?wsdl');
// Arreglo de guías a consultar
$waylbills = array();
$waylbills[0] = '8055241528464720099314';
//$waylbills[1] = '2055241528464720097313';
//$waylbills[2] = '9015205364715620036054';
// Se llena Objeto WaybillRange
$WaybillRange = new StdClass();
$WaybillRange -> initialWaybill = '';
$WaybillRange -> finalWaybill = '';
// Se llena objeto WaybillList, se trata guías de 22 dígitos
$WaybillList = new StdClass();
$WaybillList -> waybillType = 'G';
$WaybillList -> waybills = $waylbills;
// Se llena objeto SearchType, se indica que se trata de una lista de guías
$SearchType = new StdClass();
$SearchType -> waybillRange = $WaybillRange;
$SearchType -> waybillList = $WaybillList;
$SearchType -> type = 'L';
// Se llena objeto HistoryConfiguration, se indica que se requiere toda la historia de las guías
$HistoryConfiguration = new StdClass;
$HistoryConfiguration -> includeHistory = 1;
$HistoryConfiguration -> historyType = 'ALL';
// Se llena objeto Filter, se indica que no se requiere el filtro por estado actual de las guías
$Filter = new StdClass;
$Filter -> filterInformation = 0;
$Filter -> filterType = 'DELIVERED';
// Se llena objeto SearchConfiguration, se indican parámetros adicionales a la búsqueda
$SearchConfiguration = new StdClass();
$SearchConfiguration -> includeDimensions = 0;
$SearchConfiguration -> includeWaybillReplaceData = 0;
$SearchConfiguration -> includeReturnDocumentData = 0;
$SearchConfiguration -> includeMultipleServiceData = 0;
$SearchConfiguration -> includeInternationalData = 0;
$SearchConfiguration -> includeSignature = 0;
$SearchConfiguration -> includeCustomerInfo = 1;
$SearchConfiguration -> historyConfiguration = $HistoryConfiguration;
$SearchConfiguration -> filterType= $Filter;
// Se instancía al método del web service para consulta de guías
$result = $client->ExecuteQuery(array(
'suscriberId'=>25,
'login'=>'Usuario1',
'password'=> '1GCvGIu$',
'searchType' => $SearchType,
'searchConfiguration' => $SearchConfiguration
)
);
//Se imprime resultado obtenido de la consulta al ws
print_r ($result);
?>

Gracias por su apoyo.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Webservice de envíos - extraer la informacion de una clase

Publicado por kip (877 intervenciones) el 17/07/2017 22:45:54
Hola, cual es la info que necesitas ? Puedes acceder a las propiedades del objeto, así obtendrás los valores de estas, ya con print_r() tienes una idea de la estructura de este.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Webservice de envíos - extraer la informacion de una clase

Publicado por Fernando (14 intervenciones) el 18/07/2017 19:25:56
Buenas tardes,

Deseo obtener la infomación de:

[statusSPA]

No se como acceder a las propiedades del objeto.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Webservice de envíos - extraer la informacion de una clase

Publicado por Miguel (218 intervenciones) el 18/07/2017 23:00:58
Ya tienes la estructura, accede a sus propiedades como lo haces con cualquier objeto...


1
$datos = $result->statusSPA;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Webservice de envíos - extraer la informacion de una clase

Publicado por Fernando (14 intervenciones) el 18/07/2017 23:24:55
Ya he añadido esta parte, no me muestra nada en la pantalla pero tampoco aparece error:

1
2
3
$datos = $result->statusSPA;
print $datos;
echo $datos;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Webservice de envíos - extraer la informacion de una clase

Publicado por kip (877 intervenciones) el 18/07/2017 23:40:55
Miguel, la estructura del objeto que coloca arriba tiene mas niveles, de aquella forma que sugieres no funcionara, fijate bien en lo que le muestra print_r() y sabrás a que me refiero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Webservice de envíos - extraer la informacion de una clase

Publicado por kip (877 intervenciones) el 18/07/2017 23:34:37
Asi es como deberias acceder:

1
echo $result->ExecuteQueryResult->trackingData->TrackingData->statusSPA;

Puedes usar json_decode() junto con json_encode() tambien convertir el objeto a un array y manipularlo de esa forma.

Asi:

1
$result_array = json_decode(json_encode($result), TRUE);

Pruebalo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Webservice de envíos - extraer la informacion de una clase

Publicado por Fernando (14 intervenciones) el 19/07/2017 02:04:26
Buenas noches,

Lo he probado y la primer forma me ha resultado muy bien, hasta que llegue al dato [eventDescriptionSPA] en history y no se si se ocupe un arreglo diferente pues no he logrado conseguir la informacion de este.

Gracias por tu apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Webservice de envíos - extraer la informacion de una clase

Publicado por Fernando (14 intervenciones) el 20/07/2017 17:33:18
Buen día,

Lo he probado en el servidor de la siguiente forma y se queda en blanco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
$client = new SoapClient('https://trackingqa.estafeta.com/Service.asmx?wsdl');
// Arreglo de guías a consultar
$waylbills = array();
$waylbills[0] = '8055241528464720099314';
//$waylbills[1] = '2055241528464720097313';
//$waylbills[2] = '9015205364715620036054';
// Se llena Objeto WaybillRange
$WaybillRange = new StdClass();
$WaybillRange -> initialWaybill = '';
$WaybillRange -> finalWaybill = '';
// Se llena objeto WaybillList, se trata guías de 22 dígitos
$WaybillList = new StdClass();
$WaybillList -> waybillType = 'G';
$WaybillList -> waybills = $waylbills;
// Se llena objeto SearchType, se indica que se trata de una lista de guías
$SearchType = new StdClass();
$SearchType -> waybillRange = $WaybillRange;
$SearchType -> waybillList = $WaybillList;
$SearchType -> type = 'L';
// Se llena objeto HistoryConfiguration, se indica que se requiere toda la historia de las guías
$HistoryConfiguration = new StdClass;
$HistoryConfiguration -> includeHistory = 1;
$HistoryConfiguration -> historyType = 'ALL';
// Se llena objeto Filter, se indica que no se requiere el filtro por estado actual de las guías
$Filter = new StdClass;
$Filter -> filterInformation = 0;
$Filter -> filterType = 'DELIVERED';
// Se llena objeto SearchConfiguration, se indican parámetros adicionales a la búsqueda
$SearchConfiguration = new StdClass();
$SearchConfiguration -> includeDimensions = 0;
$SearchConfiguration -> includeWaybillReplaceData = 0;
$SearchConfiguration -> includeReturnDocumentData = 0;
$SearchConfiguration -> includeMultipleServiceData = 0;
$SearchConfiguration -> includeInternationalData = 0;
$SearchConfiguration -> includeSignature = 0;
$SearchConfiguration -> includeCustomerInfo = 1;
$SearchConfiguration -> historyConfiguration = $HistoryConfiguration;
$SearchConfiguration -> filterType= $Filter;
// Se instancía al método del web service para consulta de guías
$result = $client->ExecuteQuery(array(
'suscriberId'=>25,
'login'=>'Usuario1',
'password'=> '1GCvGIu$',
'searchType' => $SearchType,
'searchConfiguration' => $SearchConfiguration
)
);
//Se imprime resultado obtenido de la consulta al ws
echo "waybill: ".$waylbills[0];
echo "<br>";
echo "shortWaybillId: ".$result->ExecuteQueryResult->trackingData->TrackingData->shortWaybillId;
echo "<br>";
echo "serviceId: ".$result->ExecuteQueryResult->trackingData->TrackingData->serviceId;
echo "<br>";
echo "serviceDescriptionSPA: ".$result->ExecuteQueryResult->trackingData->TrackingData->serviceDescriptionSPA;
echo "<br>";
echo "packageType: ".$result->ExecuteQueryResult->trackingData->TrackingData->packageType;
echo "<br>";
echo "statusSPA: ".$result->ExecuteQueryResult->trackingData->TrackingData->statusSPA;
echo "<br>";
echo "statusENG: ".$result->ExecuteQueryResult->trackingData->TrackingData->statusENG;
echo "<br>";
echo "pickupDateTime: ".$result->ExecuteQueryResult->trackingData->TrackingData->pickupData->pickupDateTime;
echo "<br>";
echo "destinationAcronym: ".$result->ExecuteQueryResult->trackingData->TrackingData->deliveryData->destinationAcronym;
echo "<br>";
echo "destinationName: ".$result->ExecuteQueryResult->trackingData->TrackingData->deliveryData->destinationName;
echo "<br>";
echo "deliveryDateTime: ".$result->ExecuteQueryResult->trackingData->TrackingData->deliveryData->deliveryDateTime;
echo "<br>";
echo "zipCode: ".$result->ExecuteQueryResult->trackingData->TrackingData->deliveryData->zipCode;
echo "<br>";
echo "receiverName: ".$result->ExecuteQueryResult->trackingData->TrackingData->deliveryData->receiverName;
echo "<br>";
echo "eventDateTime: ".$result->ExecuteQueryResult->trackingData->TrackingData->1->eventDateTime;
//print_r ($result->[waybill]);
?>

Lo raro es que en mi equipo corre sin problema.

¿Saben porque puede ser?

Espero que puedan ayudarme.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar