0

我想通过 Python 使用 SmartyStreets 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 调用。

以下是有关我的设置的一些信息:

dan@h81:~/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.
>>> 
>>> 
dan@h81:~/ks/c/lodgiq $ 
dan@h81:~/ks/c/lodgiq $ 
dan@h81:~/ks/c/lodgiq $ python ss.py 
> /home/dan/ks/c/lodgiq/ss.py(16)<module>()
-> req2.status_code
(Pdb) req2.status_code
404
(Pdb) 
4

1 回答 1

1

这里发生了两件事:

  1. 您的网址不正确。您的代码显示您正在请求 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,statezipcode以上,但您发送的是 HTTP 标头的值,而不是查询参数。payload2根据请求文档发送标题headers

希望有帮助。

于 2016-03-31T00:46:27.443 回答