문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top