我正在尝试使用python进行CDYNE
服务的地址验证。
我使用this作为参考来创建POST
请求,它看起来像是
import urllib2
import urllib
url = 'http://pav3.cdyne.com/PavService.svc/VerifyAddressAdvanced'
data = {}
data['CityName'] = 'San Francisco'
data['FirmOrRecipient'] = 'CDYNE'
data['LicenseKey'] = 'valid_key'
data['PrimaryAddressLine'] = '45 fremont street'
data['ReturnCaseSensitive'] = True
data['ReturnCensusInfo'] = True
data['ReturnCityAbbreviation'] = True
data['ReturnGeoLocation'] = True
data['ReturnLegislativeInfo'] = True
data['ReturnMailingIndustryInfo'] = True
data['ReturnResidentialIndicator'] = True
data['ReturnStreetAbbreviated'] = True
data['SecondaryAddressLine'] = ''
data['State'] = 'CA'
data['Urbanization'] = ''
data['ZipCode'] = '94105'
并将请求发布如下
data_encoded = urllib.urlencode(data)
req = urllib2.Request(url, data_encoded)
response = urllib2.urlopen(req)
我将错误视为
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 398, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 511, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 436, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 370, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 519, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
我是新手,所以不明白出了什么问题,请帮忙
答案 0 :(得分:1)
您必须以json
或xml
格式的文档发送请求,架构位于您链接到的页面上。
你发送了一个urlencoded请求,api不支持。
编辑:这就是使用JSON
:
import json
data_encoded = json.dumps(data)
req = urllib2.Request(url, data_encoded, {'Content-Type': 'application/json'})
response = urllib2.urlopen(req)
print response.read()
# ...