Pregunta

Yo estaba tratando de usar http://www.jongsma.org/ GC / scripts / ofx-ba.py para agarrar mi información de cuentas bancarias de Wachovia. Al no tener suerte, decidí que me acaba de tratar de construir manualmente algunos datos de la solicitud utilizando este ejemplo

Por lo tanto, tengo este archivo que quiero usar como los datos de la solicitud. Digamos que es 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>

A continuación, en Python, trato:

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

Este comando me da una href="http://dpaste.com/hold/114906/" rel="nofollow 500 y este rastreo . Me pregunto lo que está mal con mi petición.

Visitar la url sin datos y sin preocupación por los encabezados,

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

produce el mismo que visitar esa url directamente ,

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

Esto es bastante obvio, pero sólo una observación. Todo sobre el tema parece ser bastante anticuado. Con la esperanza de escribir un módulo pitón de x sencilla con el código abierto. Tal vez ya hay algo desarrollado que no he logrado encontrar?

Editar - Si hago una asignación fija de la información anterior:

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

y luego urlencode y hacer la solicitud con que a medida que los datos

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>
¿Fue útil?

Solución

simplemente podría ser autenticado? (O falta de ella?)

Otros consejos

El problema era que estaban pasando previamente en los datos de su archivo directamente como el parámetro de datos a la Request. El archivo que estaba leyendo en ambos contiene las cabeceras y los datos que debe enviar. Usted necesaria para abastecer las cabeceras y los datos por separado ya que ahora lo ha hecho.

Error HTTP 403 significa que la solicitud fue correcta, pero el servidor se niega a responder a ella. ¿Ya ha firmado y dispuestas permiso para usar el servicio web que está intentando tener acceso? Si es así ¿hay alguna autenticación que lo que necesita hacer antes de hacer la solicitud?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top