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

RE: Consuming an internal web service



Sender: Scott Klement <sk@xxxxxxxxxxxxxxxx>

I have some doubts on how to begin. I read the message of Scott about the "SOAP Message Generator", but I feel that something is missing.

What do you feel is missing?



I also read the EXAMPLE16, but I don't see any "SOAP" message.

EXAMPLE16 doesn't use SOAP.



So I'm confused.
Can anybody send me another example ?

Please don't have to be right now, take your time, i'm interested just for my own knowledge.

I wrote an example recently for the Club Tech iSeries Programming Tips newsletter. If you have a ProVIP account with the iSeries Network (you're entitled to one if you have a subscription to iSeries NEWS magazine) then you can read it at the following link:


http://www.iseriesnetwork.com/article.cfm?id=52258

If you don't have a ProVIP membership... here's the code from the article (but without the text that explains how it works)


* Example of consuming a Web Service for Currency Conversion * Scott Klement, Feb 9, 2006 * * This program requires HTTPAPI to be installed on your iSeries * and compiled with XML support. You can get it from the * following link: * http://www.scottklement.com/httpapi/ * * To compile this program: * CRTBNDRPG EXCHRATE SRCFILE(xxx/xxx) DBGVIEW(*LIST) * * Sample of calling this program: * CALL EXCHRATE PARM('USD' 'CAD' 15.00) * * (It will respond with the amount of Canadian dollars * that equal 15.00 in the United States.) * * For a list of valid country codes, point your web browser * at the following link: * http://www.webservicex.net/CurrencyConvertor.asmx * * H DFTACTGRP(*NO) BNDDIR('LIBHTTP/HTTPAPI')

     D EXCHRATE        PR                  ExtPgm('EXCHRATE')
     D   Country1                     3A   const
     D   Country2                     3A   const
     D   Amount                      15P 5 const
     D EXCHRATE        PI
     D   Country1                     3A   const
     D   Country2                     3A   const
     D   Amount                      15P 5 const

/copy libhttp/qrpglesrc,httpapi_h

     D Incoming        PR
     D   rate                         8F
     D   depth                       10I 0 value
     D   name                      1024A   varying const
     D   path                     24576A   varying const
     D   value                    32767A   varying const
     D   attrs                         *   dim(32767)
     D                                     const options(*varsize)

     D SOAP            s          32767A   varying
     D rc              s             10I 0
     D rate            s              8F
     D Result          s             12P 2
     D msg             s             50A
     D wait            s              1A

      /free
       SOAP =
        '<?xml version="1.0" encoding="US-ASCII" standalone="no"?>'
       +'<SOAP-ENV:Envelope'
       +'    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";'
       +'    xmlns:tns="http://www.webserviceX.NET/";>'
       +'<SOAP-ENV:Body>'
       +'  <tns:ConversionRate>'
       +'      <tns:FromCurrency>'+ %trim(Country1) +'</tns:FromCurrency>'
       +'      <tns:ToCurrency>'+ %trim(Country2) + '</tns:ToCurrency>'
       +'  </tns:ConversionRate>'
       +'</SOAP-ENV:Body>'
       +'</SOAP-ENV:Envelope>';

       rc = http_url_post_xml(
                  'http://www.webservicex.net/CurrencyConvertor.asmx'
                         : %addr(SOAP) + 2
                         : %len(SOAP)
                         : *NULL
                         : %paddr(Incoming)
                         : %addr(rate)
                         : HTTP_TIMEOUT
                         : HTTP_USERAGENT
                         : 'text/xml'
                         : 'http://www.webserviceX.NET/ConversionRate');
       if (rc <> 1);
          msg = http_error();
       else;
          Result = %dech(Amount * rate: 12: 2);
          msg = 'Result = ' + %char(Result);
       endif;

dsply msg ' ' wait;

*inlr = *on;

/end-free

     P Incoming        B
     D Incoming        PI
     D   rate                         8F
     D   depth                       10I 0 value
     D   name                      1024A   varying const
     D   path                     24576A   varying const
     D   value                    32767A   varying const
     D   attrs                         *   dim(32767)
     D                                     const options(*varsize)

      /free
          if (name = 'ConversionRateResult');
             rate = %float(value);
          endif;
      /end-free
     P                 E

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubsribe from the list send mail
to majordomo@xxxxxxxxxxxxx with the body: unsubscribe ftpapi mymailaddr
-----------------------------------------------------------------------