[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Problem with http_url_post_xml
Scott and Thomas, we are really very grateful for your collaboration has been invaluable.
Reviewing our program and the tips you, find that we failed in one definitions(buf):
Before.
D writeConst PR 10I 0 ExtProc('write')
D fildes 10i 0 value
D buf 65535A const options(*varsize
D bytes 10U 0 value
Now.
d writeConst PR 10I 0 ExtProc('write')
d fildes 10i 0 value
d buf * value options(*string)
d bytes 10u 0 value
Again, thank you very much
Jaime E. Villa Torres
Gerente de Tecnología
Its Solutions Ltda
Calle 81 No 11 - 68 Of 614
Tel (57 1) 6180767 - 6180807
-----Mensaje original-----
De: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] En nombre de Scott Klement
Enviado el: lunes, 11 de julio de 2011 04:10 p.m.
Para: ftpapi@xxxxxxxxxxxxxxxxxxxxxx
Asunto: Re: Problem with http_url_post_xml
I agree with Thomas.
However, if you turn http_XmlReturnPtr(*ON), please remember to change
BOTH XML parse procedures ('SaveEmbed' and 'embedded') to use the
Element_Val_T type of structure.
Or, if you only change SaveEmbed, then make sure you call
http_XmlReturnPtr(*OFF) before the 2nd parse...
On 7/11/2011 1:35 AM, thomas.raddatz@xxxxxxxxxxx wrote:
>
> Jaime,
>
>
> Actually you are not that far away from success.
>
>
> First of all you have to use " Element_Val_t" and
> "http_XmlReturnPtr(*ON);" to make HTTPAPI returning the full element
> data to your callback procedure:
>
>
> D SaveEmbed PR
> D embfile 50a varying
> D depth 10I 0 value
> D name 1024A varying const
> D path 24576A varying const
> D value likeds(Element_Val_t) const
> D attrs * dim(32767)
> D const options(*varsize)
>
>
> http_XmlReturnPtr(*ON);
> rc = http_url_post( 'http://www.webservicex.net/aba.asmx'
>
> ...
>
>
> Second you need to change the prototype of procedure writeConst() to:
>
>
> D writeConst PR 10I 0 ExtProc('write')
> D fildes 10i 0 value
> D buf * value options(*string)
> D bytes 10U 0 value
>
> There are various options to define the prototype of the "write" C
> procedure, depending on what fits best to your needs. With
> options(*string) you can either pass a character field, a literal or a
> pointer to the write() procedure.
>
>
> Finally you have to slightly adjust the writeConst(..) statement like
> this:
>
>
> writeConst(fd: xmlhdr: %len(xmlhdr)); // no change here
>
> writeConst(fd: value.p_newval: value.len); // but here!
>
>
> Thomas.
>
>
> Jaime Enrique Villa Torres<jvilla@xxxxxxxxxxxxxxx> hat am 10. Juli
> 2011 um 20:21 geschrieben:
> > Dear Scott.
> >
> > We appeal to you to solve a problem we have, and would be immensely
> grateful
> > if you can help us.
> >
> > We are working on V5R4M0. We use your valuable API HTTPAPI for the
> > consumption of web services. So far we have had no problem; we
> simply use
> > http_url_post_xml with %paddr(Incoming) and everything is correct.
> >
> > We have now a new need leaving the result in the IFS. The return
> from the
> > consumed webservice is a string value, which contains data formatted
> in XML,
> > and its size is greater than 65,535 caracterres. http_url_post_xml
> leaves in
> > the IFS all the information, but the character "<" is converted into
> "<"
> > even though it is enclosed by a "<! [CDATA [...]]". This does not
> happen
> > when consuming the same web service via SOAPUI.
> >
> > We looked for a solution on the internet and found the following
> link:
> > http://www.scottklement.com/httpapi/bankrout.txt, and based on the
> example
> > we tried to solve our problem. Everything is perfect, but when
> looking at
> > the result of the PARSE, it has only 65,535 characters. While
> looking for
> > the solution we tried a procedure similar to the SaveEmbed example,
> called
> > GetInnerDoc, but the result was the same. We did another test using
> your
> > excample, called BANKROUT, using the procedure called GetInnerDoc
> and
> > entering a new change:
> >
> > D Element_Val_t ds qualified
> > D based(Template)
> > D buf *
> > D len 10i 0
> >
> > With the above DS we redefined variable "Value" of procedure
> GetInnerDoc,
> > and then we found this problem in the procedure:
> >
> > D writeConst PR 10I 0 ExtProc('write')
> > D fildes 10i 0 value
> > D buf 65535A const options(*varsize)
> > D bytes 10u 0
> >
> > Variable buf is 65,535. We tried to redefine it based on DS
> Element_Val_t,
> > but when we perfom this:
> >
> > CALLP Write (fd:% addr (value.buf) value.lon), the system sends a
> message
> > indicating that "The receiver is to small to hold the result".
> >
> > Continuing with our experiments we defined the following variable: S
> 10i 0 D
> > lenW, initialy set to 190,000. Then we performed this instruction:
> CALLP
> > Write (fd:% addr (value.buf) lenW). When looking at the IFS file, we
> see the
> > right size, but the data is truncated to 65,535 characters.
> >
> > The question that remains is: what we are doing wrong? (meaning, why
> the
> > function http_parse_xml_stmf() which uses procedure SaveEmbed, or
> function
> > http_url_post_xml which uses procedure GetInnerDoc, don't generate
> data
> > bigger that 655,35 characters?)
> >
> > We thank you a lot for your help, and for your HTTPAPI.
> >
> > Best regards,
> >
> >
> >
> >
> >
> > Jaime E. Villa Torres
> >
> > Gerente de Tecnolog�a
> >
> > Its Solutions Ltda
> >
> > Calle 81 No 11 - 68 Of 614
> >
> > Tel (57 1) 6180767 - 6180807
> >
> >
> >
>
> [j4sFAon4A+e+dNZVTTAdQAAAABJRU5ErkJggg==]
>
>
>
>
> -----------------------------------------------------------------------
> 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
-----------------------------------------------------------------------
-----
Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 10.0.1388 / Base de datos de virus: 1516/3759 - Fecha de la versión: 11/07/2011
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------