Question

Je cherchais à utiliser http://www.jongsma.org/ gc / scripts / ofx-ba.py pour saisir les informations de mon compte bancaire de wachovia. Ayant pas de chance, j'ai décidé que je voudrais juste essayer de construire manuellement des données de demande en utilisant cet exemple

Alors, j'ai ce fichier que je veux utiliser les données de demande. Appelons-le 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>

Alors, en python, je tente:

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

Cette commande me donne 500 et cette retraçage. Je me demande ce qui ne va pas avec ma demande.

Visiter l'URL avec aucune donnée et aucun souci pour les en-têtes,

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

donne la même chose que la visite cette URL directement ,

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

Ceci est assez évident mais juste une observation. Tout sur le sujet semble être assez obsolète. Dans l'espoir d'écrire un module simple ofx python à l'open source. Peut-être il y a déjà quelque chose développé que je ne l'ai pas réussi à trouver?

EDIT - Si je fais une correspondance à plat des informations ci-dessus:

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

puis urlencode et faire la demande avec ce que les données

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>
Était-ce utile?

La solution

pourrait juste être authentifié? (Ou l'absence de celui-ci?)

Autres conseils

Le problème est que vous passiez précédemment dans les données de votre fichier directement en tant que paramètre de données au Request. Le fichier que vous lisez en contient à la fois les en-têtes et les données que vous devez envoyer. Vous aviez besoin de fournir les en-têtes et les données séparément que vous avez maintenant fait.

Erreur HTTP 403 signifie que la demande a été correcte, mais le serveur refuse de répondre. Avez-vous déjà signé et arrangé l'autorisation d'utiliser le service Web que vous essayez d'accéder? Si oui est-il une authentification que vous devez faire avant de faire la demande?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top