我试图用http://www.jongsma.org/gc/scripts/ofx-ba.py从wachovia获取我的银行账户信息。由于运气不好,我决定尝试使用这个例子手动构造一些请求数据。
因此,我有一个文件,我想使用它作为请求数据。让我们称它为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模块来开源。也许已经有什么东西我还没找到呢?
编辑--如果我对上面的信息进行平面映射:
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>发布于 2009-11-01 10:25:44
可以只是身份验证吗?(还是缺乏?)
发布于 2009-11-01 09:36:52
问题是,您以前直接将文件中的数据作为数据参数传递给Request。正在读取的文件包含应该发送的标头和数据。您需要像现在这样分别提供头和数据。
HTTP错误403意味着请求是正确的,但是服务器拒绝响应它。您是否已经注册并安排了使用您要访问的web服务的权限?如果是这样的话,在提出请求之前是否需要进行某种身份验证?
https://stackoverflow.com/questions/1656611
复制相似问题