[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: New to XML - Dequeue2 Request Issue
You didn't make it convenient by including extra data in your post. Many of us don't just read code, we try to code the problem ourselves!
I managed to recreate the SOAPfile data and was able to parse using your saveembed with minor tweak to create the embfile.
I saved the SOAPfile data to a file called /home/mikekr/corby.xml and changed the "data" portion to
<transactions>base64stuff</transactions>
Here is my complete program that parses corby.xml and creates embfile with what you need. Change the file names appropriately and see if you have the base64 encoded data in /tmp/OmniTracsFuleFin.soap after you run it.
h bnddir('HTTPAPI')
/copy httpapi_h
/copy ifsio_h
dcl-s embfile varchar(50);
dcl-s soapfile varchar(50);
D SaveEmbed PR
D embfile 50a varying
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)
http_debug(*on);
soapfile = '/home/MIKEKR/corby.xml';
embfile = '/tmp/OmniTracsFuelFin.soap';
if (http_parse_xml_stmf( soapfile
: HTTP_XML_CALC
: *null
: %paddr(SaveEmbed)
: %addr(embfile) ) < 0);
// callp close(fd);
// unlink(soapfile);
// unlink(embfile);
http_crash();
endif;
*inlr = *on;
// unlink(soapfile);
P SaveEmbed B
D SaveEmbed PI
D embfile 50a varying
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 writeConst PR 10I 0 ExtProc('write')
D fildes 10i 0 value
D buf 65535A const options(*varsize)
D bytes 10U 0 value
D xmlhdr s 80a varying
D fd s 10i 0
if name = 'transactions';
unlink(embfile);
fd = open(embfile:O_CREAT+O_CCSID+O_WRONLY
:S_IRUSR + S_IWUSR:819);
callp close(fd);
fd = open(embfile: O_WRONLY+O_TEXTDATA);
writeConst(fd: value: %len(value));
callp close(fd);
endif;
P e
-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Scott Klement
Sent: Friday, December 11, 2015 8:58 AM
To: HTTPAPI and FTPAPI Projects
Subject: Re: New to XML - Dequeue2 Request Issue
Corby,
I see that a few weeks ago, you acknowledged that the data being sent to
you is base64-encoded.. As far as I can tell, however, you never call
the base64_decode() routine to decode it... am I missing something?
-SK
On 12/11/2015 8:22 AM, corby.weaver@xxxxxxxxxxxxxxxxx wrote:
> Here is my full code, less proprietary info. I wouldn't normally
> include D specs, but I want to be sure all of my bases are covered.
> 0012.00 H DFTACTGRP(*NO) BNDDIR('HTTPAPI':'QC2LE':'BASE64')
> 0013.00 /define DEBUGGING
> 0014.00
> 0020.00 /copy httpapi_h
> 0021.00 /copy base64_h
> 0022.00 /copy ifsio_h
> 0023.00
> 0024.00 D QCMDEXC PR ExtPgm('QCMDEXC')
> 0025.00 D command 32702a const options(*varsize)
> 0026.00 D len 15p 5 const
> 0027.00 D igc 3a const options(*nopass)
> 0028.00
> 0029.00 D SOAP s 32767A varying
> 0030.00 D rc s 10I 0
> 0031.00 D fd s 10I 0
> 0032.00 D soapfile s 50a varying
> 0033.00 D embfile s 50a varying
> 0034.00 D fuel ds likeds(fuel_t)
> 0035.00 D cmd s 200A
> 0036.00 D wait s 1A
> 0037.00
> 0038.00 D SaveEmbed PR
> 0039.00 D embfile 50a varying
> 0040.00 D depth 10I 0 value
> 0041.00 D name 1024A varying const
> 0042.00 D path 24576A varying const
> 0043.00 D value 32767A varying const
> 0044.00 D attrs * dim(32767)
> 0045.00 D const options(*varsize)
> 0046.00
> 0047.00 D fuel_t ds qualified
> 0048.00 D based(Template)
> 0049.00 D vehicle 20a varying
> 0050.00 D driver 30a varying
> 0051.00 D comp 30a varying
> 0052.00
> 0053.00 D embedded PR
> 0054.00 D fuel likeds(fuel_t)
> 0055.00 D depth 10I 0 value
> 0056.00 D name 1024A varying const
> 0057.00 D path 24576A varying const
> 0058.00 D value 32767A varying const
> 0059.00 D attrs * dim(32767)
> 0060.00 D const options(*varsize)
>
> 0061.00 D ds
>
> 0062.00 D DS_TimeStamp z
>
> 0063.00 D ds_curdate 10 overlay(ds_timestamp:1)
>
> 0064.00 D ds_curtime 12 overlay(ds_timestamp:12)
>
> 0065.00
>
> 0066.00 D ds
>
> 0067.00 D DS_TimeStampB z
>
> 0068.00 D ds_curdateB 10 overlay(ds_timestampB:1)
>
> 0069.00 D ds_curtimeB 12 overlay(ds_timestampB:12)
>
> 0070.00
>
> 0071.00 D createdate s 10
>
> 0072.00 D createtime s 12
>
> 0073.00 D expiredate s 10
>
> 0074.00 D expiretime s 12
>
> 0075.00 D reqfrmdate s 10
>
> 0076.00 D reqtodate s 10
>
> 0077.00 D digit1099 s 1
>
> 0078.00
>
> 0079.00 D tokentxt s 18a varying
>
> 0080.00 D token64 s 24a
> 0081.00 D p_tokenUTF s *
> 0082.00 D utflen s 10i 0
> 0083.00 D b64len s 10i 0
> 0084.00 D timoffset s 3 0
> 0085.00 D lasttrip s 8
> 0086.00
> 0087.00 C *entry plist
> 0088.00 C parm timoffset
> 0089.00 C parm lasttrip
> 0090.00
> 0091.00 C Time DS_TimeStamp
> 0092.00
> 0093.00 /free
> 0094.00 /if defined(DEBUGGING)
> 0095.00 http_debug(*ON);
> 0096.00 /endif
> 0097.00 *inlr = *on;
> 0098.00
> 0099.00 DS_TimeStampB = DS_TimeStamp;
> 0100.00
>
> 0101.00 // Calculate UTC Create Time And Date
>
> 0102.00 timoffset = timoffset * -1;
>
> 0103.00 DS_TimeStamp = DS_TimeStamp + %minutes(timoffset);
>
> 0104.00 createdate = ds_curdate;
>
> 0105.00 createtime = ds_curtime;
>
> 0106.00 %subst(createtime:3:1) = ':';
>
> 0107.00 %subst(createtime:6:1) = ':';
>
> 0108.00
>
> 0109.00 // Calculate UTC Expire Time And Date
>
> 0110.00 DS_TimeStamp = DS_TimeStamp + %minutes(5);
>
> 0111.00 expiredate = ds_curdate;
>
> 0112.00 expiretime = ds_curtime;
>
> 0113.00 %subst(expiretime:3:1) = ':';
>
> 0114.00 %subst(expiretime:6:1) = ':';
>
> 0115.00
>
> 0116.00 // Calculate UTC Requested To Date
>
> 0117.00 DS_TimeStampB = DS_TimeStampB - %days(1);
>
> 0118.00 reqtodate = ds_curdateB;
>
> 0119.00
>
> 0120.00 // Calculate UTC Requested From Date
> 0121.00 DS_TimeStampB = DS_TimeStampB - %days(1);
> 0122.00 reqfrmdate = ds_curdateB;
> 0123.00
> 0124.00 http_setCCSIDs( 1208: 0 );
> 0125.00
> 0126.00 tokentxt = %triml(createdate + createtime);
> 0127.00
> 0128.00 utflen = HTTP_xlatedyn( %len(tokentxt)
> 0129.00 : %addr(tokentxt) + 2
> 0130.00 : TO_ASCII
> 0131.00 : p_tokenUTF );
> 0132.00
> 0133.00 b64len = base64_encode( p_tokenUTF
> 0134.00 : utflen
> 0135.00 : %addr(token64)
> 0136.00 : %size(token64) );
> 0137.00
> 0138.00 dealloc p_tokenUTF;
> 0139.00
> 0140.00 // Note: http_debug(*ON/*OFF) can be used to turn debugging
>
> 0141.00 // on and off. When debugging is turned on,
> diagnostic
> 0142.00 // info is written to an IFS file named
>
> 0143.00 // /tmp/httpapi_debug.txt
>
> 0144.00
>
> 0145.00 //http_debug(*ON);
>
> 0146.00
>
> 0147.00 // Note: http_XmlStripCRLF(*ON/*OFF) controls whether or not
>
> 0148.00 // the XML parser removes CR and LF characters from
> the
> 0149.00 // Xml data that's passed to your 'Incoming'
> procedure.
> 0150.00
>
> 0151.00 http_XmlStripCRLF(*ON);
>
> 0152.00
>
> 0153.00 SOAP =
>
> 0154.00 '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
>
> 0155.00 +'<SOAP-ENV:Envelope'
>
> 0156.00 +'
> xmlns:SOAP-ENV="[1]http://schemas.xmlsoap.org/soap/envelope/"'
> 0157.00 +' xmlns:web="[2]http://websvcs.otswebws">'
>
> 0158.00 +'<SOAP-ENV:Header>'
>
> 0159.00 +' <wsse:Security SOAP-ENV:mustUnderstand="1"'
>
> 0160.00 +'
> xmlns:wsse="[3]http://docs.oasis-open.org/wss/2004/01/oasis-200401-'
> 0161.00 +'wss-wssecurity-secext-1.0.xsd">'
>
> 0162.00 +' <wsu:Timestamp wsu:Id="Timestamp-6"'
>
> 0163.00 +'
> xmlns:wsu="[4]http://docs.oasis-open.org/wss/2004/01/oasis-200401'
> 0164.00 +'-wss-wssecurity-utility-1.0.xsd">'
>
> 0165.00 +'
> <wsu:Created>'+createdate+'T'+createtime+'Z</wsu:Created>'
> 0166.00 +'
> <wsu:Expires>'+expiredate+'T'+expiretime+'Z</wsu:Expires>'
> 0167.00 +' </wsu:Timestamp>'
>
> 0168.00 +' <wsse:UsernameToken wsu:Id="UsernameToken-5" xmlns:wsu'
>
> 0169.00 +'="[5]http://docs.oasis-open.org/wss/2004/01/oasis-200401-'
>
> 0170.00 +'wss-wssecurity-utility-1.0.xsd">'
>
> 0171.00 +' <wsse:Username>XXXXXXXXXX</wsse:Username>'
>
> 0172.00 +' <wsse:Password Type="[6]http://docs.oasis-open.org/wss'
>
> 0173.00 +'/2004/01/oasis-200401-wss-username-token-profile-1.0'
>
> 0174.00 +'#PasswordText">XXXXXXXXXX</wsse:Password>'
>
> 0175.00 +' <wsse:Nonce
> EncodingType="[7]http://docs.oasis-open.org/'
> 0176.00 +'wss/2004/01/oasis-200401-wss-soap-message-security-'
>
> 0177.00 //+'1.0#Base64Binary">Qcw0k1jjcEvvrNldT3ex1A==</wsse:'
>
> 0178.00 +'1.0#Base64Binary">'+token64+'</wsse:'
>
> 0179.00 +'Nonce>'
>
> 0180.00 +'
> <wsu:Created>'+createdate+'T'+createtime+'Z</wsu:Created>'
> 0181.00 +' </wsse:UsernameToken>'
>
> 0182.00 +' </wsse:Security>'
>
> 0183.00 +'</SOAP-ENV:Header>'
>
> 0184.00 +'<SOAP-ENV:Body>'
>
> 0185.00 +' <web:dequeue2>'
>
> 0186.00 +' <subscriberId>3</subscriberId>'
>
> 0187.00 +' <transactionIdIn>0</transactionIdIn>'
>
> 0188.00 +' </web:dequeue2>'
>
> 0189.00 +'</SOAP-ENV:Body>'
>
> 0190.00 +'</SOAP-ENV:Envelope>';
>
> 0191.00
>
> 0192.00 http_debug(*ON);
>
> 0193.00
>
> 0194.00 soapfile = '/tmp/OmniTracsFuelRaw.soap';
>
> 0195.00
>
> 0196.00 rc = http_url_post(
>
> 0197.00
>
> 0198.00
> 'https://services.omnitracs.com:443/otsWebWS/services/OTSWebSvcs'
> 0199.00 : %addr(SOAP) + 2
>
> 0200.00 : %len(SOAP)
> 0201.00 : soapfile
> 0202.00 : HTTP_TIMEOUT
> 0203.00 : HTTP_USERAGENT
> 0204.00 : 'text/xml'
> 0205.00 : 'ETS Test');
> 0206.00
> 0207.00 if (rc <> 1);
> 0208.00 unlink(soapfile);
> 0209.00 http_crash();
> 0210.00 endif;
> 0211.00
> 0212.00 // ----------------------------------------------
> 0213.00 // The response from the server will be in
> 0214.00 // the IFS in a file with a unique name.
> 0215.00 // that IFS filename is in the "tempfile"
> 0216.00 // variable at this point.
> 0217.00 //
> 0218.00 // For debugging purposes, display the
> 0219.00 // contents of that file, now.
> 0220.00 // ----------------------------------------------
> 0221.00 /if defined(DEBUGGING)
> 0222.00 dsply ('Press <ENTER> to see SOAP response') ' ' wait;
> 0223.00 cmd = 'DSPF STMF(''' + soapfile + ''')';
> 0224.00 QCMDEXC(cmd: %len(cmd));
> 0225.00 /endif
> 0226.00
> 0227.00 // ----------------------------------------------
> 0228.00 // Parse the SOAP document (the one in soapfile)
> 0229.00 // Inside it will be another XML document that's
> 0230.00 // embedded within -- save that to a separate
> 0231.00 // file in the IFS.
> 0232.00 // ----------------------------------------------
> 0233.00
> 0234.00 embfile = '/tmp/OmniTracsFuelFin.soap';
> 0235.00
> 0236.00 if (http_parse_xml_stmf( soapfile
> 0237.00 : HTTP_XML_CALC
> 0238.00 : *null
> 0239.00 : %paddr(SaveEmbed)
> 0240.00 : %addr(embfile) ) < 0);
> 0241.00 callp close(fd);
> 0242.00 unlink(soapfile);
> 0243.00 unlink(embfile);
> 0244.00 http_crash();
> 0245.00 endif;
> 0246.00
> 0247.00 unlink(soapfile);
> 0248.00
> 0249.00 // ----------------------------------------------
> 0250.00 // For the sake of debugging, display the
> 0251.00 // contents of the embedded XML document
> 0252.00 // (Remove from production code)
> 0253.00 // ----------------------------------------------
> 0254.00
> 0255.00 /if defined(DEBUGGING)
> 0256.00 dsply ('Press <ENTER> to see extracted XML') ' ' wait;
> 0257.00 cmd = 'DSPF STMF(''' + embfile + ''')';
> 0258.00 QCMDEXC(cmd: %len(cmd));
> 0259.00 /endif
> 0260.00
> 0261.00 // ----------------------------------------------
> 0262.00 // Parse the second XML document (the one
> 0263.00 // that was embedded)
> 0264.00 // ----------------------------------------------
> 0265.00 fuel = *allx'00';
> 0266.00 if (http_parse_xml_stmf( embfile
> 0267.00 : HTTP_XML_CALC
> 0268.00 : *null
> 0269.00 : %paddr(Embedded)
> 0270.00 : %addr(fuel) ) < 0);
> 0271.00 unlink(embfile);
> 0272.00 http_crash();
> 0273.00 endif;
> 0274.00
> 0275.00
> 0276.00 *inlr = *on;
> 0277.00
> 0278.00 /end-free
> 0279.00
> 0280.00 P SaveEmbed B
> 0281.00 D SaveEmbed PI
> 0282.00 D embfile 50a varying
> 0283.00 D depth 10I 0 value
> 0284.00 D name 1024A varying const
> 0285.00 D path 24576A varying const
> 0286.00 D value 32767A varying const
> 0287.00 D attrs * dim(32767)
> 0288.00 D const options(*varsize)
> 0289.00
> 0290.00 D writeConst PR 10I 0 ExtProc('write')
> 0291.00 D fildes 10i 0 value
> 0292.00 D buf 65535A const options(*varsize)
> 0293.00 D bytes 10U 0 value
> 0294.00
> 0295.00 D xmlhdr s 80a varying
> 0296.00 D fd s 10i 0
> 0297.00
> 0298.00 /free
> 0299.00 // if (name <> 'GetABADetailsByRoutingNumberResult');
> 0300.00 // return;
> 0301.00 // endif;
> 0302.00
> 0303.00 // ------------------------------------------
> 0304.00 // create new stream file in IFS
> 0305.00 // tag it with CCSID 1208 (UTF-8)
> 0306.00 // ------------------------------------------
> 0307.00
> 0308.00 unlink(embfile);
> 0309.00 fd = open(embfile: O_CREAT+O_CCSID+O_WRONLY
> 0310.00 : S_IRUSR + S_IWUSR: 819);
> 0311.00 callp close(fd);
> 0312.00
> 0313.00 // ------------------------------------------
> 0314.00 // Open stream file for appending data
> 0315.00 // and write embedded XML document to it
> 0316.00 // ------------------------------------------
> 0317.00
> 0318.00 fd = open(embfile: O_WRONLY+O_TEXTDATA);
> 0319.00
> 0320.00 xmlhdr= '<?xml version="1.0" encoding="UTF-8"?>' +
> x'0d25';
> 0321.00 writeConst(fd: xmlhdr: %len(xmlhdr));
>
> 0322.00 writeConst(fd: value: %len(value));
>
> 0323.00
>
> 0324.00 callp close(fd);
>
> 0325.00 /end-free
>
> 0326.00 P E
>
> 0327.00
>
> 0328.00
>
> 0329.00 P embedded B
>
> 0330.00 D embedded PI
>
> 0331.00 D fuel likeds(fuel_t)
>
> 0332.00 D depth 10I 0 value
>
> 0333.00 D name 1024A varying const
>
> 0334.00 D path 24576A varying const
>
> 0335.00 D value 32767A varying const
>
> 0336.00 D attrs * dim(32767)
>
> 0337.00 D const options(*varsize)
>
> 0338.00
>
> 0339.00 /free
>
> 0340.00 select;
> 0341.00 when name = 'vehicleID';
> 0342.00 fuel.vehicle = %trimr(value);
> 0343.00 when name = 'driverName';
> 0344.00 fuel.driver = %trimr(value);
> 0345.00 when name = 'companyName';
> 0346.00 fuel.comp = %trimr(value);
> 0347.00 endsl;
> 0348.00 /end-free
> 0349.00 P E
> Here are my results as seen in step 221.00:
> ************Beginning of data**************
>
> <soapenv:Envelope
> xmlns:soapenv="[8]http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:soapenc="[9]http://schemas.xmlsoap.org/soap/encoding/
> " xmlns:xsd="[10]http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="[11]http://www.w3.org/2001/XMLSchema-instance"><soapenv:Head
> er/><soapenv:Body>
> <p917:dequeue2Response
> xmlns:p917="[12]http://websvcs.otswebws"><dequeue2Return><count>1</coun
> t><transactions>PD94bWwgdmVyc2lvbj0iMS4wIi
> BlbmNvZGluZz0iVVRGLTgiPz48dHJhbkJsb2NrPjx0cmFuIElEPSI0ODQ5MTgiIGNvbXBhb
> nlJRD0iRkFSTkVSQk9DSyIgYXV4SUQ9IjA1NDYwNTk4MjQiPjxULjIuUk0wMS
> 4wPjxldmVudFRTPjIwMTUtMDktMjJUMjE6MzM6MDZaPC9ldmVudFRTPjxlcXVpcG1lbnQgS
> UQ9IkJBR1VOSVQiIGVxdWlwVHlwZT0idHJhY3RvciIgdW5pdEFkZHJlc3M9Ij
> AxMDcwNTI2OTAiIG1vYmlsZVR5cGU9IjgiLz48ZHJpdmVySUQ+VFJBSU5FUjwvZHJpdmVyS
> UQ+PHBvc2l0aW9uIGxvbj0iLTk0LjgzNzU5MiIgbGF0PSI0Mi4wNjYwMTgiIH
> Bvc1RTPSIyMDE1LTA5LTIyVDE0OjU0OjIyWiIvPjxwb3NUeXBlPjM8L3Bvc1R5cGU+PGlnb
> ml0aW9uU3RhdHVzPjE8L2lnbml0aW9uU3RhdHVzPjx0cmlwU3RhdHVzPk88L3
> RyaXBTdGF0dXM+PEdNSD4wMDEwMTgwMzE8L0dNSD48cmVjZWl2ZWRUUz4yMDE1LTA5LTIyV
> DIxOjM2OjU2WjwvcmVjZWl2ZWRUUz48bXNnUHJpb3JpdHk+MDwvbXNnUHJpb3
> JpdHk+PG1hY3JvQm9keT48bWFjcm9UeXBlIGRpcmVjdGlvbj0iUiIgbnVtYmVyPSIxIiB2Z
> XJzaW9uPSIyIj5UUlVDSyBGVUVMPC9tYWNyb1R5cGU+PG1hY3JvRmllbGQgZG
> ljdFRhZz0idmVoaWNsZUlkIj5CMDE8L21hY3JvRmllbGQ+PG1hY3JvRmllbGQgZGljdFRhZ
> z0iZHJpdmVyTmFtZSI+QklMTFkgQk9CPC9tYWNyb0ZpZWxkPjxtYWNyb0ZpZW
> xkIGRpY3RUYWc9ImNvbXBhbnlOYW1lIj5TUEFSS1lTIENBUlJPTEw8L21hY3JvRmllbGQ+P
> G1hY3JvRmllbGQgZGljdFRhZz0ic3RhdGUiPklBPC9tYWNyb0ZpZWxkPjxtYW
> Nyb0ZpZWxkIGRpY3RUYWc9ImdhbGxvbnMiPjUwPC9tYWNyb0ZpZWxkPjxtYWNyb0ZpZWxkI
> GRpY3RUYWc9ImNvc3Qgb2YgZnVlbCI+MjAwLjAwPC9tYWNyb0ZpZWxkPjxtYW
> Nyb0ZpZWxkIGRpY3RUYWc9IndlaWdodCI+NTAwPC9tYWNyb0ZpZWxkPjwvbWFjcm9Cb2R5P
> jwvVC4yLlJNMDEuMD48L3RyYW4+PC90cmFuQmxvY2s+</transactions><tr
> ansactionIdOut>484918</transactionIdOut></dequeue2Return></p917:dequeue
> 2Response></soapenv:Body></soapenv:Envelope>
> ************End of Data********************
> My results as seen in step 255.00
> ************Beginning of data**************
> <?xml version="1.0" encoding="UTF-8"?>
> ************End of Data********************
> When I move on to the next step, I get "XML parse failed at line 2, col
> 0, element not found." What am I missing?
> Thanks for the feedback.
>
> Corby Weaver
> From: Mike Krebs <mkrebs@xxxxxxxxxxxxxxxxxx>
> To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>,
> Date: 12/07/2015 10:37 AM
> Subject: RE: New to XML - Dequeue2 Request Issue
> Sent by: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>
> __________________________________________________________________
>
> Nothing stands out to me...you never explained how and where "I'm
> having an issue".
> Post debug. Make sure to scrub proprietary or confidential information.
> -----Original Message-----
> From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> [[13]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> corby.weaver@xxxxxxxxxxxxxxxxx
> Sent: Wednesday, December 2, 2015 10:50 AM
> To: HTTPAPI and FTPAPI Projects
> Subject: RE: New to XML - Dequeue2 Request Issue
> I've got my initial file coming in fine (Step 1). I'm having an
> issue
> with Step 2, parsing the "real" data.
> Here is my code:
> soapfile = '/tmp/OmniTracsFuelRaw.soap';
> rc = http_url_post(
>
> 'https://services.omnitracs.com:443/otsWebWS/services/OTSWebSvcs'
> : %addr(SOAP) + 2
> : %len(SOAP)
> : soapfile
> : HTTP_TIMEOUT
> : HTTP_USERAGENT
> : 'text/xml'
> : 'ETS Test');
> if (rc <> 1);
> unlink(soapfile);
> http_crash();
> endif;
> // ----------------------------------------------
> // The response from the server will be in
> // the IFS in a file with a unique name.
> // that IFS filename is in the "tempfile"
> // variable at this point.
> //
> // For debugging purposes, display the
> // contents of that file, now.
> // ----------------------------------------------
> // ----------------------------------------------
> // Parse the SOAP document (the one in soapfile)
> // Inside it will be another XML document that's
> // embedded within -- save that to a separate
> // file in the IFS.
> // ----------------------------------------------
> embfile = '/tmp/OmniTracsFuelFin.soap';
> if (http_parse_xml_stmf( soapfile
> : HTTP_XML_CALC
> : *null
> : %paddr(SaveEmbed)
> : %addr(embfile) ) < 0);
> callp close(fd);
> unlink(soapfile);
> unlink(embfile);
> http_crash();
> endif;
> unlink(soapfile);
> Anything stand out? Thoughts and suggestions are appreciated.
> Thanks!
> Corby Weaver
> From: Mike Krebs <mkrebs@xxxxxxxxxxxxxxxxxx>
> To: HTTPAPI and FTPAPI Projects
> <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>,
> Date: 11/20/2015 05:09 PM
> Subject: RE: New to XML - Dequeue2 Request Issue
> Sent by: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> __________________________________________________________________
> Let's break the project into steps:
> 1. Send request and receive response
> 2. Parse the IFS file saving the "real" data
> 3. Decode the "real" data
> 4. Parse the "real" data
> See Example17 for 1, 2, and 4. To decode see Scott's Base64 or the
> built-in support in OS400.
> Alternatively, use WSDL2RPG as in the linked thread to do what you
> need. It is a little harder to understand initially but it will
> generate programs for you to modify for the service. Depending on the
> WSDL, it might do everything you need.
> -----Original Message-----
> From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> [[1][14]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> corby.weaver@xxxxxxxxxxxxxxxxx
> Sent: Friday, November 20, 2015 1:05 PM
> To: HTTPAPI and FTPAPI Projects
> Subject: Re: New to XML - Dequeue2 Request Issue
> Sorry, it is encoded, not encrypted. There was a similar post a
> few
> years ago where the transaction portion of the XML document was
> parsed
> and I assume the base64 decoder worked. Being unfamiliar with XML,
> I
> do not know what the code should be for my specific program.
> Here is a link to the previous thread...
>
> [1][2][15]https://scottklement.com/archives/ftpapi/201210/msg00121.html
> I'm hoping someone is able to help me with the portion of code that
> does the parse.
> Thanks,
> Corby Weaver
> References
> 1.
>
> [3][16]https://scottklement.com/archives/ftpapi/201210/msg00121.html
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [4][17]http://www.scottklement.com/mailman/listinfo/ftpapi
>
>
> ----------------------------------------------------------------------
> -
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [5][18]http://www.scottklement.com/mailman/listinfo/ftpapi
>
> -----------------------------------------------------------------------
> References
> 1. [19]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 2. [20]https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 3. [21]https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 4. [22]http://www.scottklement.com/mailman/listinfo/ftpapi
> 5. [23]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [24]http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> [25]http://www.scottklement.com/mailman/listinfo/ftpapi
>
> ----------------------------------------------------------------------
> -
>
> References
>
> 1. http://schemas.xmlsoap.org/soap/envelope/
> 2. http://websvcs.otswebws/
> 3. http://docs.oasis-open.org/wss/2004/01/oasis-200401-'
> 4. http://docs.oasis-open.org/wss/2004/01/oasis-200401'
> 5. http://docs.oasis-open.org/wss/2004/01/oasis-200401-'
> 6. http://docs.oasis-open.org/wss'
> 7. http://docs.oasis-open.org/'
> 8. http://schemas.xmlsoap.org/soap/envelope/
> 9. http://schemas.xmlsoap.org/soap/encoding/
> 10. http://www.w3.org/2001/XMLSchema
> 11. http://www.w3.org/2001/XMLSchema-instance
> 12. http://websvcs.otswebws/
> 13. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 14. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 15. https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 16. https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 17. http://www.scottklement.com/mailman/listinfo/ftpapi
> 18. http://www.scottklement.com/mailman/listinfo/ftpapi
> 19. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> 20. https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 21. https://scottklement.com/archives/ftpapi/201210/msg00121.html
> 22. http://www.scottklement.com/mailman/listinfo/ftpapi
> 23. http://www.scottklement.com/mailman/listinfo/ftpapi
> 24. http://www.scottklement.com/mailman/listinfo/ftpapi
> 25. 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
> ----------------------------------------------------------------------
> -
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.6176 / Virus Database: 4483/11157 - Release Date:
> 12/11/15
-----------------------------------------------------------------------
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
-----------------------------------------------------------------------