2016-03-31 2 views
0

Ich möchte SmartyStreets API über Python verwenden. HierWie debuggt Smartystreets API Anruf?

ist das Skript Ich verwende:

# ss.py 

import requests 
import pdb 

authid = 'jaf110af-b6ae-3ea2-829a-035dcb246392' 
token = 'kAyGAA0rD0lNykcktJpg' 
payload2 = {'auth-id':authid, 'auth-token':token} 
add_s = '1600+Amphitheatre+Parkway,+Mountain+View,+CA' 
site2 = 'https://api.smartystreets.com/'+add_s 

req2 = requests.get(site2,params=payload2) 

pdb.set_trace() 

req2.status_code 
#req2.json() 
req2.text 
'bye' 

Der API-Server ist eine 404-Ausgabe, vielleicht habe ich einen Syntaxfehler.

Bitte helfen Sie mir zu verstehen, wie meine API-Aufrufe auf den API-Server zu debuggen. Hier

einige Informationen über mein Setup:

[email protected]:~/ks/c/lodgiq $ python 
Python 3.5.1 |Anaconda 4.0.0 (64-bit)| (default, Dec 7 2015, 11:16:01) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
>>> 
[email protected]:~/ks/c/lodgiq $ 
[email protected]:~/ks/c/lodgiq $ 
[email protected]:~/ks/c/lodgiq $ python ss.py 
> /home/dan/ks/c/lodgiq/ss.py(16)<module>() 
-> req2.status_code 
(Pdb) req2.status_code 
404 
(Pdb) 

Antwort

1

Es gibt zwei Dinge passiert hier:

  1. Ihre URL falsch. Ihr Code zeigt, dass Sie die URL https://api.smartystreets.com/1600+Amphitheatre+Parkway,+Mountain+View,+CA anfordern. Sie müssen die URL https://api.smartystreets.com/?street=1600%20Amphitheatre%20Pkwy&city=Mountain%20View&state=CA&zipcode= anfordern, die eine 200 OK Antwort für mich zurückgab. Beachten Sie, dass die Adresse als Abfrageparameter und nicht im URL-Pfad selbst gesendet wird. Beachten Sie außerdem, dass die Sonderzeichen in Ihrer Adresse (z. B. + und ,) URL-codiert sind.
  2. Die params Sie vorbei in (das heißt der Wert von payload2) sollen Abfrageparameter sein, wie city, state und zipcode oben, aber Sie in dem Wert der HTTP-Header senden, keine Parameter abfragen. Senden Sie die Header von payload2 als headers gemäß der Requests documentation.

Hoffe, dass hilft.

+0

Diese Syntax funktioniert: # Importanforderungen import pdb ss.py authid = 'jaf110af-b6ae-3ea2-829a-035dcb246392' token = 'kAyGAA0rD0lNykcktJpg' payload2 = { 'authid': authid, 'Auth-token': token, "street": "1 Endlosschleife" "Stadt": "Cupertino" "Zustand": "CA", "zipcode": "95014" " Kandidaten ":" 1 "} site2 = 'https://api.smartystreets.com/street-address' req2 = requests.get (site2 , Params = payload2) pdb.set_trace() req2.status_code req2.json() – user3676943

+0

Stellen Sie sicher, dass nach wie vor die Auth-Token und Auth-Schlüssel für die API als auch passieren. Außerdem sollte die Anfrage-URL "https: //api.smartystreets.com/street-address" beginnen, gefolgt von den Parametern. Wenn Sie die API nicht mit diesem Präfix erreichen, erhalten Sie immer noch 200 OK, aber Sie werden keine Anfrage an die API mit Ihren Adressparametern stellen – camiblanch