Leer xml desde https con access

Tengo una duda y es que yo disponía de modulo de access para calcular distancias con google maps

Actualmente han cambiado y hay que añadir la KEY privada.

Este es el modulo que uso

Function G_DISTANCIA(ORIGEN As String, DESTINO As String) As String

Dim MyRequest As XMLHTTP60
Dim mydomdoc As DomDocument60
Dim distanceNode As ixmldomnode
G_DISTANCIA = 0

On Error GoTo exitRoute
ORIGEN = Replace(ORIGEN, " ", "%20")
DESTINO = Replace(DESTINO, " ", "%20")

Set MyRequest = New XMLHTTP60
MyRequest.Open "GET", "Set MyRequest = New XMLHTTP60"
MyRequest.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _
& ORIGEN & "&destinations=" & DESTINO & "&mode=driving&language=es-ES&key=KEY_PRIVADA"
MyRequest.send

Set mydomdoc = New DomDocument60
mydomdoc.LoadXML MyRequest.responseText

Set distanceNode = mydomdoc.SelectSingleNode("//leg/distance/value")
If Not distanceNode Is Nothing Then G_DISTANCIA = (distanceNode.Text / 1000) & " km"
exitRoute:

Set distanceNode = Nothing
Set mydomdoc = Nothing
Set MyRequest = Nothing

End Function

EL problema es que antes cuando el xml era en HTTP no había problema, ahora es HTTPS y me da error en la lectura.

Llevo intentando solucionar el error varios días pero no hay manera, alguien con alguna solución.

1 Respuesta

Respuesta
2

El xml sigue siendo xml, no tiene nada que ver con la URL del servicio web (http o https). No dices dónde te da error el código anterior, por lo que te pregunto:

¿La URL está bien construida? ¿Si antes del myrequest. Send coges esa URL y la llevas al navegador, funciona?

Si lo anterior funciona, ¿te carga el XML? ¿Verificaste qué el XML no ha cambiado de estructura y tiene esos nodos que intentas leer?

¿La URL está bien construida? ¿Si antes del myrequest. Send coges esa URL y la llevas al navegador, funciona? 

La URL construida si esta correcta por eso me saca el xml en el navegador, no consigo que me importe los datos de los KM y en modulo no me da fallo pero tampoco recibo el dato.

También tengo que decir, que este Modulo funcionaba a la perfección antes de que pusieran las KEYS_PRIVADAS

Este es el xml que abre con la url y la key_privada:

<DistanceMatrixResponse>

<status>OK</status>

<origin_address>Murcia, España</origin_address>

<destination_address>Madrid, España</destination_address>

<row>

<element>

<status>OK</status>

<duration>

<value>13210</value>

<text>3h 40 min</text>

</duration>

<distance>

<value>404325</value>

<text>404 km</text>

</distance>

</element>

</row>

</DistanceMatrixResponse>

Si ese es el xl, el error lo tienes en esta linea:

Set distanceNode = mydomdoc.SelectSingleNode("//leg/distance/value")

Porque la etiqueta que buscas (lo que te marco en negrita) no existe. Tendrías que cambiarla por algo como:

Set distanceNode = mydomdoc.SelectSingleNode("//row/element/distance/value")

Es decir, quitar ese "leg" que ahora no está en el XML de respuesta y cambiarlo por el "row/element" que son los nodos donde están distance y value.

Tampoco me tiene sentido que tengas esta línea:

MyRequest.Open "GET", "Set MyRequest = New XMLHTTP60"

Por otro lado, y como desconozco el XML de la versión anterior, comentarte que si usas el nodo "row/element/distance/text", ya te sale, aunque sin decimales, al distancia en Km y no tienes que hacer la división y añadirle el "Km" por código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas