簡體   English   中英

對CDYNE的請求結果為urllib2.HTTPError:HTTP錯誤400:錯誤的請求

[英]Reqest to CDYNE results in urllib2.HTTPError: HTTP Error 400: Bad Request

我正在嘗試使用python通過CDYNE服務進行地址驗證。

以此為參考來創建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  

我是新來的,所以不明白出了什么問題,請幫忙

您必須以jsonxml格式的文檔發送請求,該模式位於您鏈接到的頁面上。
您正在發送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()
# ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM