pythonでいくつかのOFXデータをつかみます
質問
私は http://www.jongsma.org/を使用しようとしていましたGC /スクリプト/ ofx-ba.py には、ワコビアの銀行口座情報をつかむために。運を持っていない、私はちょうど手動この例を使用して、いくつかの要求データを構築しようとすることを決めましたA>
だから、私は私がリクエストデータとして使用するこのファイルを持っています。さんはreq.ofxsgmlそれを呼ぶことにしましょう。
FXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRQV1>
<SONRQ>
<DTCLIENT>20071015021529.000[-8:PST]
<USERID>TheNameIuseForOnlineBanking
<USERPASS>MySecretPassword
<LANGUAGE>ENG
<FI>
<ORG>Wachovia
<FID>4309
</FI>
<APPID>Money
<APPVER>1700
</SONRQ>
</SIGNONMSGSRQV1>
<BANKMSGSRQV1>
<STMTTRNRQ>
<TRNUID>438BD6F4-2106-4C88-8DE5-7625915A2FC0
<STMTRQ>
<BANKACCTFROM>
<BANKID>061000227
<ACCTID>101555555555
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<INCTRAN>
<INCLUDE>Y
</INCTRAN>
</STMTRQ>
</STMTTRNRQ>
</BANKMSGSRQV1>
</OFX>
次に、Pythonで、私がしようとします:
>>> import urllib2
>>> query = open('req.ofxsgml').read()
>>> request = urllib2.Request('https://pfmpw.wachovia.com/cgi-forte/fortecgi?servicename=ofx&pagename=PFM',
query,
{ "Content-type": "application/x-ofx",
"Accept": "*/*, application/x-ofx"
})
>>> f = urllib2.urlopen(request)
このコマンドは、私の500とこのトレースバックを与えます。私は私の要求が間違っているのだろうか。
データのないURLとヘッダの無い懸念を訪問、
>>> f = urllib2.urlopen('https://pfmpw.wachovia.com/cgi-forte/fortecgi?servicename=ofx&pagename=PFM')
URLが直接ことを訪れると同じものを生み出します
HTTPError: HTTP Error 403: <BODY><H1>Request not allowed</H1></BODY>.
これはかなり明白ですが、ただ観察。対象のすべてはかなり時代遅れのようです。ソースを開くために、単純なPythonのOFXモジュールを記述することを望んで。たぶん私は見つけることができていないことを開発した何かがすでに存在しているのですか?
編集 - 私は上記の情報の平らなマッピングを行う場合:
d = {'ACCTID': '10555555',
'ACCTTYPE': 'CHECKING',
'APPID': 'Money',
'APPVER': '1700',
'BANKID': '061000227',
'DTCLIENT': '20071015021529.000[-8:PST]',
'FID': '4309',
'INCLUDE': 'Y',
'LANGUAGE': 'ENG',
'ORG': 'Wachovia',
'TRNUID': 'I18BD6F4-2006-4C88-8DE5-7625915A2FC0',
'USERID': 'm48m40',
'USERPASS': '12397'}
と、それをURLENCODEし、そのデータを
との要求を行いますquery=urllib.urlencode(d)
request = urllib2.Request('https://pfmpw.wachovia.com/cgi-forte/fortecgi?servicename=ofx&pagename=PFM',
query,
{ "Content-type": "application/x-ofx",
"Accept": "*/*, application/x-ofx"
})
f = urllib2.urlopen(request)
HTTP Error 403: <BODY><H1>Request not allowed</H1></BODY>
解決
だけで認証されるだろうか? (またはその欠如?)
他のヒント
問題は、以前Request
へのデータのパラメータとして直接あなたのファイルからデータを渡したということでした。あなたが読んでいたファイルは、ヘッダと、あなたが送信すべきデータの両方が含まれています。あなたが今行っているとして、別々にヘッダとデータを供給するために必要。
HTTPエラー403要求が正しかったことが、サーバーはそれに対応するために拒否しています。すでにサインアップして、あなたがアクセスしようとしているWebサービスを使用する許可を配置していますか?もしそうなら、あなたが要求を行う前に行う必要があるいくつかの認証はありますか?