我正在尝试使用Google的API进行地理定位,提供wifi数据来确定位置。 这是他们的介绍。 这是我的代码
@author: Keith
"""
import requests
payload = {
"considerIp": "false",
"wifiAccessPoints": [
{
"macAddress": "00:25:9c:cf:1c:ac",
"signalStrength": -43,
"signalToNoiseRatio": 0
},
{
"macAddress": "00:25:9c:cf:1c:ad",
"signalStrength": -55,
"signalToNoiseRatio": 0
}
],
'key':'<MyAPIKey>'
}
r = requests.post('https://www.googleapis.com/geolocation/v1/geolocate',
params=payload)
print(r.text)
这是输出
{
"location": {
"lat": 32.3643098,
"lng": -88.703656
},
"accuracy": 6061.0
}
该请求忽略了除密钥部分之外的所有有效负载,只是使用我的 IP 地址找到了地理位置。 所以我错误地发送了 json 有效负载。 我知道这可能非常简单,但是我陷入困境,找不到python与请求一起使用的示例来执行此类API查询。 谢谢
编辑: 拿起cURL库并成功执行了以下命令:
curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=<myapikey>"
并得到了我预期的输出。 我只是希望能够在请求中做同样的事情,但我尝试发送的数据在"your_filename.json"中。
请尝试以下操作:
r = requests.post('https://www.googleapis.com/geolocation/v1/geolocate?key='+ '<MyAPIKey>', json=payload)
请注意,键已移至查询参数 (URL(,并使用json
参数代替params
。
好的,我想出了我的方式的错误。 更好地了解requests.post函数,我发现我没有正确使用参数参数。 在此之后,它工作得很好,
r = requests.post('https://www.googleapis.com/geolocation/v1/geolocate', params=parameters, json=mydata, headers=headers)