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

Re: consuming web service with large base64 encoded value of embedded XML



Frances,

As far as I know there is no limitation of reading data from a stream file as well as of decoding Base64 encoded data. Both procedures (read() and base64_decode()) use pointer to pass the data and hence the only limitation is the amount of storage that you can allocate to a pointer. For non teraspace storage this limit is 16MB.

Procedure base64_decodeStreamToStream() does not have any limitation because you can call it in a loop. Internally procedure decodeRaw() calls the specified READ and WRITE procedures in a loop until the READ procedures return -1 (EOF). This way you can read Base64 data from a file of any size and write the decoded data to a different file.

Thomas.


Am 27.10.2013 15:56, schrieb Frances Knott:
Thanks for the response. My approach was basically as you described and  I have been able to successfully decode a smaller data field, translate it to EBCDIC and parse the XML.
Our system I is at v6r1.
  I was having a hard time telling if the problem was that I wasn't getting all of the data when I read the stream file or if  the problem was the decoding the data.  I guess at this point my question is what is the maximum size that I can read from a stream file and the maximum size that I can send to the decoding procedure?
Thanks again -
Frances

-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas Raddatz
Sent: Sunday, October 27, 2013 9:05 AM
To: HTTPAPI and FTPAPI Projects
Subject: Re: consuming web service with large base64 encoded value of embedded XML

Frances,

What release do you have on your System i and what specific problems do you have to process the Base64 encoded data?

It is hard to help you without knowing your environment but basically you can:

a) Use Scott Klements Base64 Encoder/Decoder to decode the Base64 data.

        lenDecoded = base64_decode(pInpData: inpSize: pOutData: outSize)

b) Use my modified version of Scott's Encoder/Decoder which lets you also decode the data to a stream file:

        lenDecoded = base64_decodeBufferToStream(
                           ptrInpData: inpSize: writeFD: pWrite)

pInpData   = Pointer to Base64 encoded input data
inpSize    = size of input data
pOutData   = Pointer to decoded output data
outSize    = maximum size of output buffer
lenDecoded = actual size of decoded output data
writeFD    = file descriptor of stream file
               Sample: fd = open('pathName': ...)
pWrite     = procedure pointer of 'write' procedure
               Sample: %paddr('write')

It may also be required to translate the decoded data if the original CCSID is different from your local CCSID. Maybe it is worth to read my FAQ "How to Send Base64 Encoded Passwords". It describes when and why character translation is required.

http://tools400.de/Downloads/Freeware/Tools/FAQ/wsdl2rpg/FAQ_How_to_Send_Base64_Encoded_Passwords_v1.0.pdf

Thomas.

Am 24.10.2013 21:51, schrieb Frances Knott:
     I am accessing a web service and the response is an XML response with a
     large (49000 character) data field that contains XML that is base64
     encoded.


     At this point, I am able to receive the response into a file in the
     IFS, but I'm having problems processing that large data field.

     This is the beginning portion of the response:


     <service-response><service-id>XMLRating</service-id>

     <request-id>0000100</request-id>

     <status><code>SUCCESS</code>

     <message>XML Rating
     Successful</message>

     </status>

     <error/><data>PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxSYXRlUmVzdWx0cz4KPFN0YXR1c
     0NvZGU+MDwvU3RhdHVzQ29kZT4KPFN0YXR1c01lc3NhZ2U+UmF0aW5nIHByb2

     1vZGVsPSJOT1JNQUxJWkVEX1NNQyIgaXNTZWxlY3RlZD0iZmFsc2UiIGlzQWxsb2NhdGVkP
     SJmYWxzZSIgY3VycmVuY3lDb2RlPSJVU0QiIGNyZWF0ZURhdGU9IjEwLzI0Lz

     43MjwvVG90YWw+CjxOb3JtYWxpemVkVG90YWwgY3VycmVuY3lDb2RlPSJVU0QiPjk4LjcyP
     C9Ob3JtYWxpemVkVG90YWw+CjxDb250cmFjdElkPigyMzY2NzU4NDAwMywzMD

     k8L0NhcnJpZXJJZD4KPENhcnJpZXJOYW1lPkFCRiBGcmVpZ2h0IFN5c3RlbSwgSW5jPC9DY
     XJyaWVyTmFtZT4KPFNDQUM+QUJGUzwvU0NBQz4KPE1vZGU+TFRMPC9Nb2RlPg

     w+MzIuNTQ8L0FjY2Vzc29yaWFsVG90YWw+CjxTdWJUb3RhbD44MC4wMDwvU3ViVG90YWw+C
     jxUb3RhbD4xMTIuNTQ8L1RvdGFsPgo8Tm9ybWFsaXplZFRvdGFsIGN1cnJlbm

     1heD4KPElzTm9udGF4YWJsZT5mYWxzZTwvSXNOb250YXhhYmxlPgo8L0NoYXJnZT4KPC9Da
     GFyZ2VzPgo8Q29tbWVudHMvPjwvUHJpY2VTaGVldD4KPFByaWNlU2hlZXQgdH

     RpQ29kZT4KPEFtb3VudD44Ljk4PC9BbW91bnQ+CjxSYXRlPjE0LjAwPC9SYXRlPgo8UmF0Z
     VF1YWxpZmllcj5QQ1Q8L1JhdGVRdWFsaWZpZXI+CjxRdWFudGl0eT42NC4xNz

     JlaWdodENsYXNzPjAuMDwvRmFrRnJlaWdodENsYXNzPgo8SXNNaW4+ZmFsc2U8L0lzTWluP
     go8SXNNYXg+ZmFsc2U8L0lzTWF4Pgo8SXNOb250YXhhYmxlPmZhbHNlPC9Jc0


     I've reviewed the example programs in libhttp and tried several things
     without success.  Can anyone point me in the right direction to process
     this data?



     Thanks in advance for your help

     J+J Flooring Group

     Frances Knott - Sr. Business Systems Analyst
     p: 706.529.2100 x8384
     [1]www.jj-invision.com
     [2]www.jj-kinetex.com
     J+J Flooring Group
     818 J&J Drive
     PO Box 1287
     Dalton, GA 30722

     Invision | Kinetex

     This e-mail and any files transmitted with it are confidential and
     intended solely for the use of the individual or entity to whom they
     are addressed. If you are not the intended recipient, please notify the
     sender immediately. J+J Flooring Group does not provide or endorse
     opinions, conclusions or other information in this message that do not
     relate to the official business of the company.

References

     1. http://www.jj-invision.com/
     2. http://www.jj-kinetex.com/



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