Domanda

Stavo cercando di utilizzare http://www.jongsma.org/ gc / scripts / ofx-ba.py per afferrare il mio conto in banca da Wachovia. Non avendo fortuna, ho deciso che vorrei solo cercare di costruire manualmente alcuni dati richiesta utilizzando questo esempio

Così, ho questo file che voglio usare come i dati di richiesta. Chiamiamolo 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>

Poi, in python, provo:

>>> 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)

Questo comando mi dà una 500 e questa traceback . Mi chiedo che cosa è sbagliato con la mia richiesta.

visitando l'URL senza i dati e nessuna preoccupazione per le intestazioni,

>>> f = urllib2.urlopen('https://pfmpw.wachovia.com/cgi-forte/fortecgi?servicename=ofx&amp;pagename=PFM')

cede la stessa cosa come visiting che url direttamente ,

HTTPError: HTTP Error 403: <BODY><H1>Request not allowed</H1></BODY>.

Questo è abbastanza ovvio, ma solo un'osservazione. Tutto sul tema sembra essere abbastanza obsoleto. Sperando per scrivere un semplice modulo pitone di x per aprire sorgente. Forse c'è già qualcosa sviluppato che io non sono riuscito a trovare?

Modifica - Se faccio una mappatura piana della informazioni di cui sopra:

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'}

e poi urlencode e fare la richiesta con i dati che, come

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>
È stato utile?

Soluzione

potrebbe essere solo autenticato? (O la sua assenza?)

Altri suggerimenti

Il problema era che in precedenza si passa i dati dal file direttamente come parametro i dati al Request. Il file stavi leggendo in contiene sia le intestazioni ei dati che si dovrebbe essere l'invio. Avevi bisogno di fornire le intestazioni ei dati separatamente come hai fatto ora.

HTTP errore 403 significa che la richiesta è stata corretta ma il server si rifiuta di rispondere ad essa. Hai già firmato e organizzato il permesso di utilizzare il servizio web che si sta tentando di accedere? Se è così c'è qualche autenticazione che è necessario fare prima di fare la richiesta?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top