2016-03-31 5 views
0

Я хочу использовать API SmartyStreets через Python.Как отлаживать вызов smartistreets api?

Вот сценарий, я использую:

# 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' 

Сервер API выдает 404, так что, возможно, у меня есть ошибка синтаксиса.

Пожалуйста, помогите мне понять, как отлаживать мои вызовы API на сервере API.

Вот некоторая информация о моей установке:

[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) 

ответ

1

Есть две вещи, которые происходят здесь:

  1. Ваш URL неверен. Ваш код показывает, что вы запрашиваете URL-адрес https://api.smartystreets.com/1600+Amphitheatre+Parkway,+Mountain+View,+CA. Вам необходимо запросить URL-адрес https://api.smartystreets.com/?street=1600%20Amphitheatre%20Pkwy&city=Mountain%20View&state=CA&zipcode=, который ответил на вопрос 200 OK. Обратите внимание, что адрес отправляется как параметры запроса, а не в путь URL. Также обратите внимание, что специальные символы в вашем адресе (то есть + и ,) кодируются URL.
  2. В params вы переходящие в (то есть значение payload2) предназначены для параметров запроса, как city, state и zipcode выше, но вы отправка в значении HTTP заголовков, а не параметры запроса. Отправьте в заголовки payload2 как headers согласно Requests documentation.

Надеюсь, что это поможет.

+0

Этот синтаксис работает: # ss.py Импорт Спросы импорт PDB AUTHID = 'jaf110af-b6ae-3ea2-829a-035dcb246392' маркер = '' kAyGAA0rD0lNykcktJpg payload2 = { 'AUTHID': AUTHID, 'Auth-маркер': маркер, "улица": "1 бесконечный цикл", "город": "Купертино", "состояние": "ок", "почтовый индекс": "95014", " кандидатов ":" 1 "} сайт2 = 'https://api.smartystreets.com/street-address' req2 = запросы.get (site2 , PARAMS = payload2) pdb.set_trace() req2.status_code req2.json() – user3676943

+0

Убедитесь, что вы по-прежнему передать маркер аутентификации и ключ аутентификации в API, а также. Кроме того, URL-адрес запроса должен начинаться с 'https: //api.smartystreets.com/street-address? ', За которым следуют параметры. Если вы не нажмете на API с этим префиксом, вы все равно получите 200 OK, но на самом деле вы не будете обращаться к API с вашими параметрами адреса – camiblanch

Смежные вопросы