Hi Paul,
It is hard to guess what the problem is without the source code.
However, feel free to look at the attached example. It works. The example
is a modified version of EXAMPLE16 and uses http_XmlReturnPtr(*ON) to get a
pointer for the element data instead of the 64k field.
Thomas.
Am 04.06.2015 um 10:39 schrieb Paul Park:
> Thomas
> Thanks for the suggestion. I wasn't aware of http_XmlReturnPtr(). When
> using it I now get the error message "Receiver value too small to hold
> result."
> This is the line that crashes:
> base64_decode( value.ptr
> : value.len
> : %addr(outVar)
> : %size(outVar));
> In debug, when I query the value of value.ptr it is SPP:*NULL
> value.len = -1025976637, which is strange.
> I've seen a thread on this mailing list about base64 decoding a png
> file so I'll have a read of that later. Maybe it can shed some light on
> this.
> Thanks for your help!
> Paul
>
> On 03/06/2015 11:46, Thomas Raddatz wrote:
>
> Paul,
>
> HTTPAPI internally uses a 64k field to pass the element data to your
> endOfElement() callback procedure, which most likely is the reason for the
> problem.
>
> Maybe you can try to call http_XmlReturnPtr() to let HTTPAPI pass a pointer
> to your callback instead of a field. With http_XmlReturnPtr(*ON) you get a
> data structure of the following format instead of a field for 'value':
>
> d value_t ds qualified
> d ptr *
> d len 10i 0
>
> d EndElement PR
> d userdata * value
> d depth 10I 0 value
> d name 1024A varying const
> d path 24576A varying const
> d value likeds(value_t) const
> d Attrs * dim(32767)
> d const options(*varsize)
>
> See also Chris' response to "returning more than 8192 bytes" from 10 th
> October 2014.
>
> Thomas.
>
>
> Am 03.06.2015 um 10:26 schrieb Paul Park:
>
> Hi
>
> Thanks very much for the replies!
>
> Thomas: it's base 64 binary data contained within an XML element called
> File_Stream. In the procedure that gets called at "end of XML element", I
> have this:
>
> P endOfElement b
>
> D endOfElement pi
>
> D userData * value
>
> D depth 10i 0 value
>
> D name 1024a varying const
>
> D path 24576a varying const
>
> D value like(streamBlob) const
>
> D attrs * dim(32767)
>
> D const options(*varsize)
>
>
>
>
> D rc1 S 10I 0
>
> D sb2 s SQLTYPE([1]BLOB:9999999)
>
> D outVar s 32767a varying
>
>
>
>
> /free
>
>
>
>
> select;
>
>
>
>
> // File stream
>
> when name = 'File_Stream';
>
> fd = open(
>
> '/ppk/image.tif':
>
> O_CREAT+O_WRONLY:
>
> S_IWUSR+S_IRUSR+S_IRGRP+S_IROTH);
>
>
>
>
> sb2 = value;
>
>
>
>
> //Convert to base 64
>
> base64_decode( %addr(sb2_data)
>
> : %len(sb2_data)
>
> : %addr(outVar)
>
> : %size(outVar));
>
>
>
>
> rc1 = write(fd: %addr(outVar): %size(outVar));
>
>
>
>
> endsl;
>
>
>
>
> /end-free
>
>
>
>
> P endOfElement e
>
> However, when the base64_decode procedure is called, it fails with "Unable
> to decode character at position 65534. (Char=x'40')". When I debug the
> program and look at the contents of sb2_data, position 65534 is indeed
> blank. Positions 1 - 65533 do have data though. How can I fix this problem?
>
> Mike: thanks for those code samples. I'll have a go at running them. I
> don't think I have a problem viewing tifs (it's hard to know at this
> point!) but those samples are useful for me to get a better idea of what
> else I can do with HTTPAPI.
>
> Paul
>
> On 02/06/2015 22:30, Mike Krebs wrote:
>
> How is your ability to download and view any other .tif?
>
> If you want to try, here is a short program to download a .tif to
> /tmp/ccitt_1.tif
> H DFTACTGRP(*NO) BNDDIR('HTTPAPI')
>
> /copy qrpglesrc,httpapi_h
> D
> rc s 10I 0
> D msg s 52A
> D URL S 300A varying
> D IFS S 256A varying
> D errNo S 10i 0
> D retries S 10i 0
>
> c callp http_debug(*ON)
>
> c eval URL = '[2]http://www.fileformat.info'
> c + '/format/tiff/sample/'
> c + '3794038f08df403bb446a97f897c578d/'
> c + 'download'
>
> c eval IFS = '/tmp/ccitt_1.tif'
>
> c eval rc = http_url_get(URL: IFS : 5)
> if rc = 302;
> rc = http_url_get(http_redir_loc: ifs);
> /copy qrpglesrc,httpapi_h
> D
> rc s 10I 0
> D msg s 52A
> D URL S 300A varying
> D IFS S 256A varying
> D errNo S 10i 0
> D retries S 10i 0
>
> c callp http_debug(*ON)
>
> c eval URL = '[3]http://www.fileformat.info'
> c + '/format/tiff/sample/'
> c + '3794038f08df403bb446a97f897c578d/'
> c + 'download'
>
> c eval IFS = '/tmp/ccitt_1.tif'
>
> c eval rc = http_url_get(URL: IFS : 5)
> if rc = 302;
> rc = http_url_get(http_redir_loc: ifs);
> endif;
>
> c if rc <> 1
> c eval retries = 0
> c eval msg = http_error(errNo)
> c dow errNo = 7 and retries < 5
> c callp http_dmsg('rc= ' + %char(rc))
> c callp http_dmsg('retries= ' + %char(retries))
> c eval rc = http_url_get(URL: IFS : 5)
> c if rc = 1
> c eval retries = *hival
> c else
> c eval msg = http_error(errNo)
> c eval retries += 1
> c endif
> c enddo
> c endif
>
> c eval *inlr = *on
>
> -----Original Message-----
> From: [4]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> [[5]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas Raddatz
> Sent: Tuesday, June 2, 2015 12:42 PM
> To: HTTPAPI and FTPAPI Projects
> Subject: Re: Save File Stream As .tif Image
>
> Paul,
>
> What kind of stream do you get back. Is the the binary image stream or is
> it an XML message with the image data as part of an xml element?
>
> I assume that you get back an XML message. So how is the binary image
> data encoded? Base64? Something else?
>
> Can you provide a sample response message? You may shorten the image data
> if it is to big. Just include, let's say, the first 30 and last 30 bytes
> of the image data.
>
> Thomas.
>
> Am 02.06.2015 um 13:31 schrieb Paul Park:
>
> Hi
>
> The HTTPAPI service programs are working a treat for us, but I have
> run into a problem.
>
> I am using http_url_post_xml to post an XML request containing an ID.
> The response I get back contains the "file stream" for a .tif image. I
> want to save this data in a .tif file, in the IFS, so that when I open
> it I can see the image. The image is destined for display on a web
> page. So far, I can save the file stream in example.tif but it doesn't
> open as an image.
>
> I don't think this is specifically a HTTPAPI problem, but does anyone
> know what I need to do to save the file stream properly as a .tif image?
>
> Thanks for any assistance.
>
> Cheers,
> Paul
>
>
> Enterprise Software Systems.
> Company No 3374336. Registered in England, Registered Office:
> Enterprise House, Pacific Road Altrincham, Cheshire, WA14 5EN
>
> The information in this email is confidential and may be legally
> privileged. It is intended solely for the addressee. Access to this
> email by anyone else is unauthorized. If you are not the intended
> recipient, any disclosure, copying, distribution or any action taken
> or omitted to be taken in reliance on it, is prohibited and may be
> unlawful. If you are not the intended addressee please contact the
> sender and dispose of this e-mail.
>
>
> ----------------------------------------------------------------------
> - This is the FTPAPI mailing list. To unsubscribe, please go to:
> [6]http://www.scottklement.com/mailman/listinfo/ftpapi
> ----------------------------------------------------------------------
> -
>
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [7]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [8]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
>
>
>
> Enterprise Software Systems.
> Company No 3374336. Registered in England,
> Registered Office: Enterprise House, Pacific Road
> Altrincham, Cheshire, WA14 5EN
>
> The information in this email is confidential and may be legally
> privileged. It is intended solely for the addressee. Access to this email
> by anyone else is unauthorized. If you are not the intended recipient, any
> disclosure, copying, distribution or any action taken or omitted to be
> taken in reliance on it, is prohibited and may be unlawful. If you are not
> the intended addressee please contact the sender and dispose of this
> e-mail.
>
>
>
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [9]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
>
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [10]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> __________________________________________________________________
>
> Enterprise Software Systems.
> Company No 3374336. Registered in England,
> Registered Office: Enterprise House, Pacific Road
> Altrincham, Cheshire, WA14 5EN
> The information in this email is confidential and may be legally
> privileged. It is intended solely for the addressee. Access to this ema
> il
> by anyone else is unauthorized. If you are not the intended recipient,
> any
> disclosure, copying, distribution or any action taken or omitted to be
> taken in reliance on it, is prohibited and may be unlawful. If you are
> not
> the intended addressee please contact the sender and dispose of this
> e-mail.
>
> References
>
> 1. BLOB:9999999
> 2. http://www.fileformat.info/
> 3. http://www.fileformat.info/
> 4. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 5. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 6. http://www.scottklement.com/mailman/listinfo/ftpapi
> 7. http://www.scottklement.com/mailman/listinfo/ftpapi
> 8. http://www.scottklement.com/mailman/listinfo/ftpapi
> 9. http://www.scottklement.com/mailman/listinfo/ftpapi
> 10. 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
> -----------------------------------------------------------------------
>
Attachment:
EXAMPLE16B.zip
Description: Zip archive
----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------