[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Formatting an XML request and receiving the XML response



I've already explained why this isn't working (6 days ago!)  please read 
point (b) in the following e-mail message:
http://www.scottklement.com/archives/ftpapi/200905/msg00110.html

The code that Mike posted was not a valid use of the http_url_encoder() 
routines.  He created an encoder, but he never asked it to encode anything.

Your code is accessing the wrong URL.  why?  Because the parts of the 
URL that you wanted encoded AREN'T THERE because you didn't send them to 
the encoder, and therefore it couldn't add them to the URL.



Rich Kitterman wrote:
>    Hi Mike,
>    I used your example program, substituting my userid, and have been
>    getting "403 Forbidden" errors when I try to run it.  The following
>    debug list shows that the USPS server thinks I'm trying to request a
>    directory listing, which I'm not.  I tried sending the URL through a
>    browser and got errors as well, but once I replaced the blanks with
>    "%20" it ran without a problem.  I'm not certain what I'm doing wrong
>    on the i, but could use a little clarification...
>     ************Beginning of
>    data**************
>    HTTPAPI Ver 1.23 released
>    2008-04-24
>    OS/400 Ver
>    V5R1M0
> 
> 
>    New iconv() objects set, PostRem=819. PostLoc=0. ProtRem=819.
>    ProtLoc=0
>    http_url_get():
>    entered
>    http_persist_open():
>    entered
>    http_long_ParseURL():
>    entered
>    DNS resolver retrans:
>    2
>    DNS resolver retry  :
>    2
>    DNS resolver options:
>    x'00000136'
>    DNS default domain:
>    S105VX7M.COM
>    DNS server found:
>    205.171.2.65
>    DNS server found:
>    205.171.3.65
>    http_persist_get():
>    entered
>    http_long_ParseURL():
>    entered
>    do_get():
>    entered
>    GET /
>    HTTP/1.1
>    Host:
>    testing.shippingapis.com
>    User-Agent:
>    http-api/1.23
> 
> 
> 
>    recvresp():
>    entered
> 
>    HTTP/1.1 403
>    Forbidden
> 
>    Content-Length:
>    218
> 
>    Content-Type:
>    text/html
> 
>    Server:
>    Microsoft-IIS/6.0
> 
>    X-Powered-By:
>    ASP.NET
> 
>    Date: Fri, 05 Jun 2009 19:38:28
>    GMT
> 
> 
> 
>    SetError() #13: HTTP/1.1 403
>    Forbidden
> 
>    recvdoc parms: identity
>    218
> 
>    header_load_cookies()
>    entered
> 
>    recvdoc():
>    entered
> 
>    SetError()
>    #0:
> 
>    <html><head><title>Error</title></head><body><head><title>Directory
>    Listing Denied</title></head> <body><h1>Directory Listing
>    Denied</h1>This Virtual Directory does not allow contents to be
>    listed.</body></body></html>
>    SetError() #13: HTTP/1.1 403 Forbidden
>    http_close(): entered
>    Thanks!
>    Rich
>    > From: richardkitterman@xxxxxxxxxxx
>    > To: ftpapi@xxxxxxxxxxxxxxxxxxxxxx
>    > Subject: RE: Formatting an XML request and receiving the XML
>    response
>    > Date: Mon, 1 Jun 2009 13:08:17 -0600
>    >
>    >
>    > Hi Mike,
>    >
>    > Thanks very much for this, it's a great help to me.
>    >
>    > Mike, remembering that I'm a complete novice at this - what would
>    you recommend to correct the encoding issues you pointed out?
>    >
>    > I really appreciate this - without the help I've been getting, it
>    would take me much longer to get up to speed with this.
>    >
>    > I will likely have more questions for either of you or both, if
>    that's ok...
>    >
>    > Thanks!
>    >
>    > Rich
>    >
>    >
>    >
>    > EMAILING FOR THE GREATER GOOD
>    > Join me
>    >
>    > > Date: Fri, 29 May 2009 16:34:04 -0500
>    > > From: sk@xxxxxxxxxxxxxxxx
>    > > To: ftpapi@xxxxxxxxxxxxxxxxxxxxxx
>    > > Subject: Re: Formatting an XML request and receiving the XML
>    response
>    > >
>    > > Hi Mike,
>    > >
>    > > You're making two mistakes in your encoding:
>    > >
>    > > a) You aren't encoding the data to make it a valid XML document.
>    As
>    > > soon as you get an address with a < or & symbol, your XML document
>    will
>    > > be invalid.
>    > >
>    > > b) You aren't using the URL encoder properly. You've created an
>    > > encoder, but you didn't ask it to encode anything. The URL itself
>    > > contains all of the data, but if there's any characters that are
>    invalid
>    > > in a URL (that includes blanks, &, =, /, etc) the HTTP protocol is
>    going
>    > > to choke on it.
>    > >
>    > >
>    > >
>    > > Mike Krebs wrote:
>    > > > Rich, I played with this app a while back (USPS address
>    verification). Here was my test program. I didn't parse the result but
>    look at EXAMPLE15 for how to handle that part.
>    > > >
>    > > > Mike Krebs
>    > > >
>    > > >
>    > > > H DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR('LIBHTTP/HTTPAPI')
>    > > >
>    > > > D/copy libhttp/qrpglesrc,httpapi_h
>    > > >
>    > > > D rc s 10I 0
>    > > > D msg s 52A
>    > > >
>    > > > d USPSUserID s 12a inz('your user id')
>    > > > d address1 s 38a inz(*blanks)
>    > > > d address2 s 38a inz('6406 Ivy Lane')
>    > > > d city s 15a inz('Greenbelt')
>    > > > d state s 2a inz('MD')
>    > > > d zip5 s 5a inz(*blanks)
>    > > > d zip4 s 4a inz(*blanks)
>    > > >
>    > > > d Enc s like(HTTP_URL_ENCODER)
>    > > > d url s 32767a varying
>    > > > d urlValues s 32767a varying
>    > > >
>    > > > C* retrieve the ILE RPG/400 refernece manual from IBM:
>    > > >
>    > > > c eval urlValues =
>    > > > c 'ShippingAPItest.dll?API=Verify'+
>    > > > c 'ShippingAPItest.dll?API=Verify'+
>    > > > c '&XML=<AddressValidateRequest '+
>    > > > c 'USERID="' + %trim(USPSUserID) + '">'
>    > > > c '<Address ID="0">'+
>    > > > c '<Address1>' + %trim(Address1) +
>    > > > c '</Address1>' +
>    > > > c '<Address2>' + %trim(Address2) +
>    > > > c '</Address2>' +
>    > > > c '<City>' + %trim(City) +
>    > > > c '</City>' +
>    > > > c '<State>' + %trim(State) +
>    > > > c '</State>' +
>    > > > c '<Zip5>' + %trim(Zip5) +
>    > > > c '</Zip5>' +
>    > > > c '<Zip4>' + %trim(Zip4) +
>    > > > c '</Zip4>' +
>    > > > c '</Address></AddressValidateRequest>'
>    > > > c eval url =
>    > > > c 'http://testing.shippingapis.com/'
>    > > >
>    > > > c eval Enc = http_url_encoder_new()
>    > > > c eval rc = http_url_get(url +
>    > > > c http_url_encoder_getstr(Enc):
>    > > > c '/tmp/address_valid.txt')
>    > > > c if rc <> 1
>    > > > c eval msg = http_error
>    > > > c dsply msg
>    > > > c endif
>    > > >
>    > > > c callp http_url_encoder_free(Enc)
>    > > >
>    > > > c eval *inlr = *on
>    > > > ****************** End of data *****
>    > > >
>    ----------------------------------------------------------------------
>    -
>    > > > This is the FTPAPI mailing list. To unsubscribe, please go to:
>    > > > http://www.scottklement.com/mailman/listinfo/ftpapi
>    > > >
>    ----------------------------------------------------------------------
>    -
>    > > >
>    > >
>    > >
>    ----------------------------------------------------------------------
>    -
>    > > This is the FTPAPI mailing list. To unsubscribe, please go to:
>    > > http://www.scottklement.com/mailman/listinfo/ftpapi
>    > >
>    ----------------------------------------------------------------------
>    -
> 
> 
> 
> ------------------------------------------------------------------------
> 
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------