поэтому, когда я запускаю код python, сервер (google) дает мне другой ответ, чем когда я запускаю команду curl. Может ли кто-нибудь сказать мне, где я ошибаюсь?Проблемы с python + json против curl
код:
import urllib2, simplejson
def MapsWIFI(card):
req = urllib2.Request("https://www.googleapis.com/geolocation/v1/geolocate?key=AI...")
jWifi = """
{
"wifiAccessPoints": [
{
"macAddress": "64:D1:A3:0A:11:65",
"channel": 6,
},
... #some AP here
]
}
"""
print jWifi
req.add_header("Content-Type", "application/json")
jWifiReport = urllib2.urlopen(req,simplejson.dumps(jWifi)).read()
print jWifiReport
APdetected = str(len(wifiCell))
mapsDict = simplejson.loads(jWifiReport)
location = str(mapsDict.get("location",{}))[1:-1]
accuracy = "Accuracy: "+str(mapsDict.get("accuracy",{}))[1:-1]
mapMe = "|---"+location.split(",")[0]+"\n|---"+location.split(",")[1][1:]+"\n|---$
return mapMe
MapsWIFI("wlp8s0")
И команда:
curl -d @file2.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=AI..."
где file2.json содержит ровно jWifi в этом формате. Проблема заключается в том, что, как сказано, местоположение, возвращаемое кодом, отличается от местоположения, возвращаемого curl. Я не получаю код ошибки, поэтому я уверен, что синтаксис верен.
Из интереса, зачем использовать библиотеку 'simplejson'? Python 2.7 поставляется с модулем 'json', который представляет собой * тот же самый проект *. –
Да, вы правы. Но это часть проекта, который должен быть максимально переносимым, поэтому это должно работать с другими версиями. – Pielco11