Python으로 일부 ofx 데이터를 가져옵니다
문제
나는 사용하려고했다 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 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은 요청이 정확했지만 서버가 응답을 거부하고 있음을 의미합니다. 이미 가입하고 액세스하려는 웹 서비스를 사용할 수있는 권한을 정 했습니까? 그렇다면 요청을하기 전에해야 할 인증이 있습니까?