2012-05-09 10 views
0

CDYNEサービスを使用してアドレス検証にpythonを使用しようとしています。urllib2.HTTPErrorでCDYNEを要求する:HTTPエラー400:不正リクエスト

私はPOSTリクエストを作成するための基準としてthisを使用し、それが

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' 

を以下のように見えると私は

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 

Iとエラーが表示さ

data_encoded = urllib.urlencode(data) 
req = urllib2.Request(url, data_encoded) 
response = urllib2.urlopen(req) 

を次のようにリクエストを投稿しますこれに新しいので、wrを行ったことを理解していないあなたが助けてください

答えて

1

あなたはjsonまたはxmlの書式設定されたドキュメントとしてリクエストを送信する必要があります。スキーマはリンク先のページにあります。
あなたはapiでサポートされていないurlencodedリクエストを送信しています。

編集:それはそれは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() 
# ... 
+0

マタ、私はそれをどのように行うのですか?私はそれを行う方法が表示されません – daydreamer

+0

これは魅力のように動作します!マタありがとう – daydreamer

関連する問題