Reputation: 246
I am trying to send http/https requests to the Map kit API throughout a python 3 script:
origin = {
"lng": -4.66529,
"lat": 54.216608
}
destination = {
"lng": -4.66552,
"lat": 54.2166
}
data_input = {
"origin": origin,
"destination": destination
}
json_input = json.dumps(data_input)
url = "https://mapapi.cloud.huawei.com/mapApi/v1/routeService/driving"
headers = {"api-key": self.key,
"Content-Type": "application/json"}
http_proxy = "http://proxy_ip:proxy_port"
https_proxy = "http://proxy_ip:proxy_port"
proxyDict = {
"http": http_proxy,
"https": https_proxy
}
response = requests.get(url=url, data=json_input, headers=headers, proxies=proxyDict, verify=False)
print(response.status_code)
print(response.json())
but I have two main issues:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
404
{'returnCode': '5', 'returnDesc': 'NOT_FOUND'}
Any idea about these issues? especially the second one?
Upvotes: 2
Views: 315
Reputation: 34027
Route planning APIs in Web APIs of HUAWEI Map Kit are a set of HTTPS-based APIs for planning walking, cycling, and driving routes and calculating route distances. The APIs return planned routes in JSON format, and provide the capabilities to plan walking, cycling, and driving routes.
API Reference: Walking Route Planning
Solution:
There are two issues in your code:
origin = {
"lng": -4.66529,
"lat": 54.216608
}
destination = {
"lng": -4.66552,
"lat": 54.2166
}
data_input = {
"origin": origin,
"destination": destination
}
json_input = json.dumps(data_input)
# replace with your own api_key, this api_key is not complete
url = "https://mapapi.cloud.huawei.com/mapApi/v1/routeService/driving?key=CV7bZ85W6Y4m%2f6fGZStNnquSLeYmJukcjeD9uJgKBRcZCg25dF%2f4cWeA5CQfWxQOKe2ByIaeEkwmMIPGBW5pPu0T%2"
headers = {"Content-Type": "application/json"}
# http_proxy = "http://proxy_ip:proxy_port"
# https_proxy = "http://proxy_ip:proxy_port"
#
# proxyDict = {
# "http": http_proxy,
# "https": https_proxy
# }
response = requests.post(url=url, data=json_input, headers=headers, verify=False)
print(response.status_code)
print(response.json())
Then, the request result can be obtained successfully.
200
{'routes': [{'paths': [{'duration': 2.0, 'durationText': '1min', 'durationInTrafficText': '1min', 'durationInTraffic': 2.0, 'distance': 13.0, 'startLocation': {'lng': -4.6652902, 'lat': 54.21660782}, 'startAddress': 'German, Isle of Man, the United Kingdom', 'distanceText': '13m', 'steps': [{'duration': 1.0, 'orientation': 0, 'durationText': '1min', 'distance': 12.078, 'startLocation': {'lng': -4.6652902, 'lat': 54.21660782}, 'instruction': '', 'action': 'end', 'distanceText': '12m', 'endLocation': {'lng': -4.66544603, 'lat': 54.21666592}, 'polyline': [{'lng': -4.6652902, 'lat': 54.21660782}, {'lng': -4.66529083, 'lat': 54.21660806}, {'lng': -4.66529083, 'lat': 54.21660806}, {'lng': -4.66540472, 'lat': 54.21665}, {'lng': -4.66544603, 'lat': 54.21666592}], 'roadName': 'Poortown Road'}], 'endLocation': {'lng': -4.66544603, 'lat': 54.21666592}, 'endAddress': 'German, Isle of Man, the United Kingdom'}], 'bounds': {'southwest': {'lng': -4.66552194, 'lat': 54.21584278}, 'northeast': {'lng': -4.66216583, 'lat': 54.21669556}}}], 'returnCode': '0', 'returnDesc': 'OK'}
Update:
Here is the Result Codes.
If you receive a 401 response, the possible causes are as follows:
Upvotes: 2