[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: XML POST
Hi Scott -
Thanks! That makes sense to me. Where can I get the definition for
encoded_data and encoded_len?
- Michael
On Jan 15, 2008 12:48 PM, Scott Klement <sk@xxxxxxxxxxxxxxxx> wrote:
> Hi Michael,
>
> From the trading partner's description, they are expecting URL-encoded
> form data to be posted. Therefore, you should be using HTTPAPI's URL
> encoder routines to encode it (unless you prefer to do that separately?)
> and then you should upload that encoded data.
>
> To encode it, you'll want to do something like this:
>
> D enc s like(HTTP_URL_ENCODER)
>
> enc = http_url_encoder_new();
> http_url_encoder_addvar_s(enc: 'qf': 'xml');
> http_url_encoder_addvar( enc
> :'xml'
> : %addr(data)
> : %len(%trimr(data)) );
>
> Then you can send it using http_url_post or http_url_post_raw (if you
> prefer that) -- but make sure you specify the content-type!!
>
> http_url_encoder_getptr( enc
> : encoded_data
> : encoded_len);
>
> rc = http_url_post_raw(
> 'https://thathost.com/thatapi.aspx?qf=xml&xml='
> : encoded_data
> : encoded_len
> : 1
> : %Paddr('INCOMING')
> : HTTP_TIMEOUT
> : HTTP_USERAGENT
> : 'application/x-www-form-urlencoded');
>
>
> Once you've posted the data, you can/should free up the memory used by
> the URL encoded data.
>
> http_url_encoder_free(enc);
>
> In the latest version of HTTPAPI, I've created shorter names for the
> "url_encoder" routines named WEBFORM. They're just aliases (via
> "extproc") for the same routines... but might be nicer to read and
> type. They are WEBFORM_new, WEBFORM_setVar, WEBFORM_setPtr,
> WEBFORM_postData, and WEBFORM_close().
>
> See EXAMPLE2 for an example of URL encoding a web form.
>
>
>
> Michael Ryan wrote:
> > Hmmm...I'm getting an error back from a trading partner for a new test
> > application I'm putting together. According to their docs, the POST
> > string should look like:
> >
> > POST
> > When using the POST method, make sure that you include the following
> > Request Headers in
> > your POST:
> > http_request.setRequestHeader(ʺContent‐typeʺ,
> > ʺapplication/x‐www‐form‐urlencodedʺ);
> > http_request.setRequestHeader(ʺContent‐lengthʺ, parameters.length);
> > http_request.setRequestHeader(ʺConnectionʺ, ʺcloseʺ);
> > Be sure to substitute your actual parameter length.
> > POST qf=xml&xml=xxx
> > Replace xxx with the URL‐encoded XML that the API is to execute.
> >
> > And here's my HTTPAPI code:
> >
> > CallP http_xproc(HTTP_POINT_ADDL_HEADER:
> > %paddr('CONNCLOSE'));
> >
> > rc = http_url_post_raw(
> > 'https://thathost.com/thatapi.aspx?qf=xml&xml='
> > : %Addr(Data)
> > : %Len(%TrimR(Data))
> > : 1
> > : %Paddr('INCOMING'));
> >
> > The Data value looks correct. I'm not sure about the "qf=xml&xml= "
> > string. Do I put that in the Data variable? Do I put in in the URL?
> >
> > Thanks!
> > -----------------------------------------------------------------------
> > 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
-----------------------------------------------------------------------