[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Ftpapi Digest, Vol 78, Issue 3
Thank You all for your help. How do I look at the debug logs? I never done that. thanks
-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of ftpapi-request@xxxxxxxxxxxxxxxxxxxxxx
Sent: Monday, April 01, 2013 3:16 PM
To: ftpapi@xxxxxxxxxxxxxxxxxxxxxx
Subject: Ftpapi Digest, Vol 78, Issue 3
Send Ftpapi mailing list submissions to
ftpapi@xxxxxxxxxxxxxxxxxxxxxx
To subscribe or unsubscribe via the World Wide Web, visit
http://scottklement.com/mailman/listinfo/ftpapi
or, via email, send a message with subject or body 'help' to
ftpapi-request@xxxxxxxxxxxxxxxxxxxxxx
You can reach the person managing the list at
ftpapi-owner@xxxxxxxxxxxxxxxxxxxxxx
When replying, please edit your Subject line so it is more specific than "Re: Contents of Ftpapi digest..."
Today's Topics:
1. RE: HTTP/1.1 400 Bad Request (Robert Gilsdorf)
2. Re: HTTP/1.1 400 Bad Request (Charles Wilt)
3. Re: HTTP/1.1 400 Bad Request (Scott Klement)
4. Re: HTTPAPI with CDATA (Scott Klement)
----------------------------------------------------------------------
Message: 1
Date: Mon, 1 Apr 2013 15:57:27 -0400
From: Robert Gilsdorf <rgilsdor@xxxxxxxxxxxxxxxx>
To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
Subject: RE: HTTP/1.1 400 Bad Request
Message-ID:
<F911C5CB2047A14F823096C71297EEE1014CCB7A7CF7@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="us-ascii"
No space after xmlns:soapenv url could lead to a misfire.
-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Mauricio Diaz-Lapham
Sent: Monday, April 01, 2013 2:28 PM
To: 'ftpapi@xxxxxxxxxxxxxxxxxxxxxx'
Subject: HTTP/1.1 400 Bad Request
Hello, Can someone help me! I keep getting this error and I have no clue as to what is causing it. Below is my code.
H DFTACTGRP(*NO) BNDDIR('HTTPAPI':'QC2LE')
d Setup pr
d WebService pr 10i 0
D Incoming PR
d ProcessJrn 100A
D depth 10I 0 value
D name 1024A varying const
D path 24576A varying const
D value 65535A varying const
D attrs * dim(32767)
D const options(*varsize)
d ARWBSRV01 pi
d ErrMsg 1024a varying
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
c*====================================================================
c* Copybooks
c*====================================================================
/copy config_h
/copy httpapi_h
d Soap s 32767a
d ProcessJrn s 100a
d ReturnCode s 10i 0
d WebSite s 100a
D soapfile s 50a varying
dVariableRecords...
d ds Qualified
d Number 10i 0
c*====================================================================
c* Main
c*====================================================================
/free
Setup();
/end-free
**********************************************************************
* Main processing - Call the Webservice to update CMA
**********************************************************************
/Free
// Call the web service that will update the client smart file.
ReturnCode = WebService();
If ReturnCode <> 1;
ErrMsg = http_error();
ReturnCode = -1;
EndIf;
/end-free
c*====================================================================
c* Setup();
c*
c* General setup.
c*====================================================================
p Setup b
/free
VariableRecords.Number = 4; // Number of keys.
// Turn HTTP debug on or off
http_debug(*ON);
// Set the correct CCSID.
http_setCCSIDs(1208:0);
// Strip off back end CRLFs on the returned XMLs.
http_XmlStripCRLF(*ON);
/end-free
p Setup e
c*====================================================================
c* WebService(); Call The Web Service.
c*====================================================================
p WebService b
d WebService pi 10i 0
/free
Soap =
'<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>'
+' <soapenv:Envelope '
+ ' xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" '
+ ' xmlns:upd="http://webservices.vonmaur.vmc/UpdateCMA.asmx">'
+ ' <soapenv:Header/>'
+ ' <soapenv:Body>'
+ ' <upd:ProcessJournal/>'
+ ' </soapenv:Body>'
+ '</soapenv:Envelope>';
// Consume the web service.
ReturnCode = http_url_post_xml(
'http://webservices.vonmaur.vmc/UpdateCMA.asmx'
: %addr(SOAP) + 2
: %len(SOAP)
: *NULL
: %paddr(Incoming)
: %addr(ProcessJrn)
: HTTP_TIMEOUT
: HTTP_USERAGENT
: 'text/xml'
: 'http://webservices.vonmaur.vmc/UpdateCMA/ProcessJournal');
return ReturnCode;
/end-free
p WebService e
c*====================================================================
c* Incoming1();
c* Parse the XML coming in to see what the client ID we received is.
c*====================================================================
p Incoming B
d Incoming PI
d ProcessJrn 100a
d depth 10i 0 value
d name 1024a varying const
d path 24576a varying const
d value 65535a varying const
d attrs * dim(32767)
d const options(*varsize)
D atof PR 8F extproc('atof')
D string * value options(*string)
/free
if (name = 'ProcessJournal');
ProcessJrn = value;
endif;
/end-free
p Incoming E
This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission. If verification is required please request a hard-copy version. Rush Trucking, PO Box 1011, Wayne, MI 48184 www.rushtrucking.com
------------------------------
Message: 2
Date: Mon, 1 Apr 2013 16:00:50 -0400
From: Charles Wilt <charles.wilt@xxxxxxxxx>
To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: HTTP/1.1 400 Bad Request
Message-ID:
<CAJ=Tnc7SjCKr-JPUcv5U+hTfUKwe0z2kP-JjnTLdKi16oN1p0Q@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset="iso-8859-1"
You should post the debug log, making sure to strip out user IDs and passwords.
But generally speaking, a 400 Bad Request means you didn't send your request correctly.
Does the web service you are trying to call have a WSDL that provides a definition of how to use the service?
Charles
On Mon, Apr 1, 2013 at 2:27 PM, Mauricio Diaz-Lapham < MDiaz-Lapham@xxxxxxxxxxx> wrote:
> Hello, Can someone help me! I keep getting this error and I have no
> clue as to what is causing it. Below is my code.
>
>
> H DFTACTGRP(*NO) BNDDIR('HTTPAPI':'QC2LE')
>
>
> d Setup pr
>
>
> d WebService pr 10i 0
>
>
> D Incoming PR
>
> d ProcessJrn 100A
>
> D depth 10I 0 value
>
> D name 1024A varying const
>
> D path 24576A varying const
>
> D value 65535A varying const
>
> D attrs * dim(32767)
>
> D const options(*varsize)
>
>
> d ARWBSRV01 pi
>
> d ErrMsg 1024a varying
>
>
> *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
>
>
> c*====================================================================
>
> c* Copybooks
>
>
> c*====================================================================
>
>
>
> /copy config_h
>
> /copy httpapi_h
>
>
> d Soap s
> 32767a
>
> d ProcessJrn s 100a
>
> d ReturnCode s 10i 0
>
> d WebSite s 100a
>
> D soapfile s 50a varying
>
>
>
> dVariableRecords...
>
> d ds Qualified
>
> d Number 10i 0
>
>
>
>
> c*====================================================================
>
> c* Main
>
>
> c*====================================================================
>
> /free
>
>
>
> Setup();
>
>
> /end-free
>
>
>
> **********************************************************************
>
> * Main processing - Call the Webservice to update CMA
>
>
> **********************************************************************
>
>
> /Free
>
>
> // Call the web service that will update the client smart file.
>
> ReturnCode = WebService();
>
> If ReturnCode <> 1;
>
> ErrMsg = http_error();
>
> ReturnCode = -1;
>
> EndIf;
>
>
> /end-free
>
>
> c*====================================================================
>
> c* Setup();
>
> c*
>
> c* General setup.
>
>
> c*====================================================================
>
>
>
> p Setup b
>
> /free
>
>
>
> VariableRecords.Number = 4; // Number of keys.
>
>
>
> // Turn HTTP debug on or off
>
> http_debug(*ON);
>
>
>
> // Set the correct CCSID.
>
> http_setCCSIDs(1208:0);
>
>
> // Strip off back end CRLFs on the returned XMLs.
>
> http_XmlStripCRLF(*ON);
>
>
>
> /end-free
>
> p Setup e
>
>
>
>
> c*====================================================================
>
> c* WebService(); Call The Web Service.
>
>
> c*====================================================================
>
>
>
> p WebService b
>
> d WebService pi 10i 0
>
> /free
>
>
>
> Soap =
>
> '<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>'
>
> +' <soapenv:Envelope '
>
> + ' xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" '
>
> + ' xmlns:upd="http://webservices.vonmaur.vmc/UpdateCMA.asmx">'
>
> + ' <soapenv:Header/>'
>
> + ' <soapenv:Body>'
>
> + ' <upd:ProcessJournal/>'
>
> + ' </soapenv:Body>'
>
> + '</soapenv:Envelope>';
>
>
>
> // Consume the web service.
>
> ReturnCode = http_url_post_xml(
>
> 'http://webservices.vonmaur.vmc/UpdateCMA.asmx'
>
> : %addr(SOAP) + 2
>
> : %len(SOAP)
>
> : *NULL
>
> : %paddr(Incoming)
>
> : %addr(ProcessJrn)
>
> :
> HTTP_TIMEOUT
>
> : HTTP_USERAGENT
>
> : 'text/xml'
>
> : 'http://webservices.vonmaur.vmc/UpdateCMA/ProcessJournal');
>
>
>
> return ReturnCode;
>
>
>
> /end-free
>
> p WebService e
>
>
> c*====================================================================
>
> c* Incoming1();
>
> c* Parse the XML coming in to see what the client ID we received is.
>
>
> c*====================================================================
>
>
>
> p Incoming B
>
> d Incoming PI
>
> d ProcessJrn 100a
>
> d depth 10i 0 value
>
> d name 1024a varying const
>
> d path 24576a varying const
>
> d value 65535a varying const
>
> d attrs * dim(32767)
>
> d const options(*varsize)
>
>
>
> D atof PR 8F extproc('atof')
>
> D string * value options(*string)
>
> /free
>
>
>
> if (name = 'ProcessJournal');
>
> ProcessJrn = value;
>
> endif;
>
>
>
> /end-free
>
> p Incoming E
>
> ----------------------------------------------------------------------
> - This is the FTPAPI mailing list. To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> ----------------------------------------------------------------------
> -
>
>
-------------- next part --------------
You should post the debug log, making sure to strip out user IDs and
passwords.
But generally speaking, a 400 Bad Request means you didn't send your
request correctly.
Does the web service you are trying to call have a WSDL that provides a
definition of how to use the service?
Charles
On Mon, Apr 1, 2013 at 2:27 PM, Mauricio Diaz-Lapham
<[1]MDiaz-Lapham@xxxxxxxxxxx> wrote:
Hello, Can someone help me! I keep getting this error and I have
no
clue as to what is causing it. Below is my code.
H DFTACTGRP(*NO) BNDDIR('HTTPAPI':'QC2LE')
d Setup pr
d WebService pr 10i 0
D Incoming PR
d ProcessJrn 100A
D depth 10I 0 value
D name 1024A varying const
D path 24576A varying const
D value 65535A varying const
D attrs * dim(32767)
D const options(*varsize)
d ARWBSRV01 pi
d ErrMsg 1024a varying
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
*=
c*==================================================================
==
c* Copybooks
c*==================================================================
==
/copy config_h
/copy httpapi_h
d Soap s
32767a
d ProcessJrn s 100a
d ReturnCode s 10i 0
d WebSite s 100a
D soapfile s 50a varying
dVariableRecords...
d ds Qualified
d Number 10i 0
c*==================================================================
==
c* Main
c*==================================================================
==
/free
Setup();
/end-free
********************************************************************
**
* Main processing - Call the Webservice to update CMA
********************************************************************
**
/Free
// Call the web service that will update the client smart
file.
ReturnCode = WebService();
If ReturnCode <> 1;
ErrMsg = http_error();
ReturnCode = -1;
EndIf;
/end-free
c*==================================================================
==
c* Setup();
c*
c* General setup.
c*==================================================================
==
p Setup b
/free
VariableRecords.Number = 4; // Number of keys.
// Turn HTTP debug on or off
http_debug(*ON);
// Set the correct CCSID.
http_setCCSIDs(1208:0);
// Strip off back end CRLFs on the returned XMLs.
http_XmlStripCRLF(*ON);
/end-free
p Setup e
c*==================================================================
==
c* WebService(); Call The Web Service.
c*==================================================================
==
p WebService b
d WebService pi 10i 0
/free
Soap =
'<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>'
+' <soapenv:Envelope '
+ '
xmlns:soapenv="[2]http://schemas.xmlsoap.org/soap/envelope/" '
+ '
xmlns:upd="[3]http://webservices.vonmaur.vmc/UpdateCMA.asmx">'
+ ' <soapenv:Header/>'
+ ' <soapenv:Body>'
+ ' <upd:ProcessJournal/>'
+ ' </soapenv:Body>'
+ '</soapenv:Envelope>';
// Consume the web service.
ReturnCode = http_url_post_xml(
'[4]http://webservices.vonmaur.vmc/UpdateCMA.asmx'
: %addr(SOAP) + 2
: %len(SOAP)
: *NULL
: %paddr(Incoming)
: %addr(ProcessJrn)
:
HTTP_TIMEOUT
: HTTP_USERAGENT
: 'text/xml'
:
'[5]http://webservices.vonmaur.vmc/UpdateCMA/ProcessJournal');
return ReturnCode;
/end-free
p WebService e
c*==================================================================
==
c* Incoming1();
c* Parse the XML coming in to see what the client ID we received
is.
c*==================================================================
==
p Incoming B
d Incoming PI
d ProcessJrn 100a
d depth 10i 0 value
d name 1024a varying const
d path 24576a varying const
d value 65535a varying const
d attrs * dim(32767)
d const options(*varsize)
D atof PR 8F extproc('atof')
D string * value options(*string)
/free
if (name = 'ProcessJournal');
ProcessJrn = value;
endif;
/end-free
p Incoming E
--------------------------------------------------------------------
---
This is the FTPAPI mailing list. To unsubscribe, please go to:
[6]http://www.scottklement.com/mailman/listinfo/ftpapi
--------------------------------------------------------------------
---
References
1. mailto:MDiaz-Lapham@xxxxxxxxxxx
2. http://schemas.xmlsoap.org/soap/envelope/
3. http://webservices.vonmaur.vmc/UpdateCMA.asmx
4. http://webservices.vonmaur.vmc/UpdateCMA.asmx
5. http://webservices.vonmaur.vmc/UpdateCMA/ProcessJournal'
6. http://www.scottklement.com/mailman/listinfo/ftpapi
------------------------------
Message: 3
Date: Mon, 01 Apr 2013 15:05:16 -0500
From: Scott Klement <sk@xxxxxxxxxxxxxxxx>
To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: HTTP/1.1 400 Bad Request
Message-ID: <5159E87C.908@xxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
I don't see anything obvious in your code that would cause this
problem. Please generate a debug/trace file so we can see what's going on.
On 4/1/2013 1:27 PM, Mauricio Diaz-Lapham wrote:
> Hello, Can someone help me! I keep getting this error and I have no
> clue as to what is causing it. Below is my code.
>
>
>
------------------------------
Message: 4
Date: Mon, 01 Apr 2013 15:15:35 -0500
From: Scott Klement <sk@xxxxxxxxxxxxxxxx>
To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: HTTPAPI with CDATA
Message-ID: <5159EAE7.3020002@xxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
Hello,
The format of the XML you are sending is probably NOT related to the format of the XML you're getting back. So telling us that you've encoded the XML you're sending to the server properly, does not (at least in my experience) have any impact on what you're getting back.
It's a matter of keeping the "payload" of the SOAP message separate from the XML that makes up the SOAP message itself.
Remember, a web service call is really calling a program/procedure over the web. The XML documents are used to represent parameters passed either into or out of the routine you're calling. In this example, the server is sending you an output document.... so it has output
parameters. Here's a simple example:
<Envelope>
<Body>
<document>
<parm1>any data can go here</parm1>
<parm2>any data can go here</parm2>
</document>
</Body>
</Envelope>
Now suppose you decided to pass an XML document in "parm2". After all, an XML document is just a character string -- so what if parm2 contains
a whole XML document inside it. That document would HAVE TO have it's
tags converted to < and >, otherwise it'd interfere with the integrity of the Envelope/Body/document/parm2 tags themselves.
It's important to understand that almost everyone calling a SOAP web service is using SOAP tooling. They aren't coding the SOAP document by hand like you are doing here -- they actually call a 3rd party program that GENERATES the code. So from their perspective, they have something
like:
parm1 = "data";
parm2 = "whole XML document here";
call WebService(parm1, parm2);
And, under the covers, the 3rd party tool converts this to the SOAP message. The data you got back in parm2 would already be removed from the SOAP message and un-escaped. The caller would never even know that it was escaped during transit, because the 3rd party tool does all of that for them.
But, HTTPAPI doesn't know anything about SOAP... it's not a SOAP tool,
it's purely an HTTP transfer tool (unlike IWS or Thomas's WSDL2RPG).
So HTTPAPI takes a string, and sends it over the network. It's up to you to format it all correctly, and to handle the data that comes back correctly. It doesn't know it's SOAP.
As Mike said (and pointed you to examples) when HTTPAPI parses the XML that's sent back, it'll automatically convert the < and > stuff back to the < and > characters, so I don't even see why this is causing you a problem.. it's very simple to deal with.
On 4/1/2013 9:57 AM, Kim Tay wrote:
> Hi,
>
> We used the HTTPAPI with CDATA to consume of of the Vendor Web Service,
> but the response is returning result tag with < and > instead of
> < >, I asked the Vendor why and ithey asked me what tool that I used?
> I old them simple XML via HTTPAPI from IBM i. Did I miss out some
> functions/method? Appreciate if you can advise me.
>
> Thanks!
>
> Hereby is my send doc
>
> SENDDOC): entered
> <?xml version="1.0" encoding="utf-8"?><soap:Envelope
> xmlns:soap="[1]http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="[2]http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="[3]http://www.w3.org/2001/XMLSchema"><soap:Body><Audit
> xmlns="[4]http://tempuri.org/McKessonAudit/Claim"><ClaimIn><![CDATA[<?x
> ml version="1.0" standalone="yes"?><MIM-UI> <SYSTEM-DATA>
> <MIM-OPTIONS> <DEFINITION-NAME>MIM</DEFINITION-NAME>
> <UNIT-EXP-PRE-OPT>2</UNIT-EXP-PRE-OPT>
> <UNIT-EXP-POST-OPT>1</UNIT-EXP-POST-OPT>
> <MOD-EXP-PRE-OPT>2</MOD-EXP-PRE-OPT>
> <MOD-EXP-POST-OPT>1</MOD-EXP-POST-OPT>
> <EXP-PAY-PCT-IND>Y</EXP-PAY-PCT-IND> </MIM-OPTIONS>
> <PRODUCT-OPTIONS> <PRODUCT-NAME>ClaimCheck</PRODUCT-NAME>
> <CALL-SEQUENCE>0</CALL-SEQUENCE>
> <CLAIMCHECK-ACCOUNT>GMISDEFAULT</CLAIMCHECK-ACCOUNT>
> <AGE-REPLACE-IND>Y</AGE-REPLACE-IND
>
> ...
>
> ...
>
> ...
>
> </MIM-UI>]]></ClaimIn></Audit></soap:Body></soap:Envelope>
> recvresp(): entered
> HTTP/1.1 200 OK
> Cache-Control: private, max-age=0
> Content-Type: text/xml; charset=utf-8
> Server: Microsoft-IIS/7.5
> X-AspNet-Version: 2.0.50727
> X-Powered-By: [5]ASP.NET
> Date: Sun, 31 Mar 2013 23:15:46 GMT
> Content-Length: 14099
>
> and here is the result;
>
> RECVDOC
> SetError() #13: HTTP/1.1 200 OK
> recvresp(): end with 200
> recvdoc parms: identity 14099
> header_load_cookies() entered
> recvdoc(): entered
> SetError() #0:
> <?xml version="1.0" encoding="utf-8"?><soap:Envelope
> xmlns:soap="[6]http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="[7]http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="[8]http://www.w3.org/2001/XMLSchema"><soap:Body>
> <AuditResponse
> xmlns="[9]http://tempuri.org/McKessonAudit/Claim"><AuditResult>
> <![CDATA[<?xml version="1.0"
> standalone="yes"?><MIM-UI><CLAIM-GROUP><CLAIM-DATA>
> ;<CLAIM-ID>000140</CLAIM-ID><MEMBER-DOB>19540103</
> MEMBER-DOB><MEMBER-GENDER>F</MEMBER-GENDER><CLAIM-LAS
> T-LINE>
>
> ...
>
> ...
>
> ..
>
> MSG-TEXT>13152 CAN ONLY BE DONE 1 TIME(S) ON SINGLE DATE;
> DUPLICATE(S)
> DENIED</MSG-TEXT></MESSAGE-ENTRY></MESSAGE-GROUP><
> /MIM-UI>
> ]]></AuditResult></AuditResponse></soap:Body></soap:Envelope>
> http_close(): entered
>
> References
>
> 1. http://schemas.xmlsoap.org/soap/envelope/
> 2. http://www.w3.org/2001/XMLSchema-instance
> 3. http://www.w3.org/2001/XMLSchema
> 4. http://tempuri.org/McKessonAudit/Claim
> 5. http://asp.net/
> 6. http://schemas.xmlsoap.org/soap/envelope/
> 7. http://www.w3.org/2001/XMLSchema-instance
> 8. http://www.w3.org/2001/XMLSchema
> 9. http://tempuri.org/McKessonAudit/Claim
>
>
>
> ----------------------------------------------------------------------
> - This is the FTPAPI mailing list. To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> ----------------------------------------------------------------------
> -
-------------- next part --------------
Hello,
The format of the XML you are sending is probably NOT related to the
format of the XML you're getting back. So telling us that you've
encoded the XML you're sending to the server properly, does not (at
least in my experience) have any impact on what you're getting back.
It's a matter of keeping the "payload" of the SOAP message separate
from the XML that makes up the SOAP message itself.
Remember, a web service call is really calling a program/procedure over
the web. The XML documents are used to represent parameters passed
either into or out of the routine you're calling. In this example, the
server is sending you an output document.... so it has output
parameters. Here's a simple example:
<Envelope>
<Body>
<document>
<parm1>any data can go here</parm1>
<parm2>any data can go here</parm2>
</document>
</Body>
</Envelope>
Now suppose you decided to pass an XML document in "parm2". After all,
an XML document is just a character string -- so what if parm2 contains
a whole XML document inside it. That document would HAVE TO have it's
tags converted to < and >, otherwise it'd interfere with the
integrity of the Envelope/Body/document/parm2 tags themselves.
It's important to understand that almost everyone calling a SOAP web
service is using SOAP tooling. They aren't coding the SOAP document by
hand like you are doing here -- they actually call a 3rd party program
that GENERATES the code. So from their perspective, they have
something like:
parm1 = "data";
parm2 = "whole XML document here";
call WebService(parm1, parm2);
And, under the covers, the 3rd party tool converts this to the SOAP
message. The data you got back in parm2 would already be removed from
the SOAP message and un-escaped. The caller would never even know that
it was escaped during transit, because the 3rd party tool does all of
that for them.
But, HTTPAPI doesn't know anything about SOAP... it's not a SOAP tool,
it's purely an HTTP transfer tool (unlike IWS or Thomas's WSDL2RPG).
So HTTPAPI takes a string, and sends it over the network. It's up to
you to format it all correctly, and to handle the data that comes back
correctly. It doesn't know it's SOAP.
As Mike said (and pointed you to examples) when HTTPAPI parses the XML
that's sent back, it'll automatically convert the < and > stuff
back to the < and > characters, so I don't even see why this is causing
you a problem.. it's very simple to deal with.
On 4/1/2013 9:57 AM, Kim Tay wrote:
Hi,
We used the HTTPAPI with CDATA to consume of of the Vendor Web Service,
but the response is returning result tag with < and > instead of
< >, I asked the Vendor why and ithey asked me what tool that I used?
I old them simple XML via HTTPAPI from IBM i. Did I miss out some
functions/method? Appreciate if you can advise me.
Thanks!
Hereby is my send doc
SENDDOC): entered
<?xml version="1.0" encoding="utf-8"?><soap:Envelope
xmlns:soap="[1][1]http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="[2][2]http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="[3][3]http://www.w3.org/2001/XMLSchema"><soap:Body><Audit
xmlns="[4][4]http://tempuri.org/McKessonAudit/Claim"><ClaimIn><![CDATA[<?x
ml version="1.0" standalone="yes"?><MIM-UI> <SYSTEM-DATA>
<MIM-OPTIONS> <DEFINITION-NAME>MIM</DEFINITION-NAME>
<UNIT-EXP-PRE-OPT>2</UNIT-EXP-PRE-OPT>
<UNIT-EXP-POST-OPT>1</UNIT-EXP-POST-OPT>
<MOD-EXP-PRE-OPT>2</MOD-EXP-PRE-OPT>
<MOD-EXP-POST-OPT>1</MOD-EXP-POST-OPT>
<EXP-PAY-PCT-IND>Y</EXP-PAY-PCT-IND> </MIM-OPTIONS>
<PRODUCT-OPTIONS> <PRODUCT-NAME>ClaimCheck</PRODUCT-NAME>
<CALL-SEQUENCE>0</CALL-SEQUENCE>
<CLAIMCHECK-ACCOUNT>GMISDEFAULT</CLAIMCHECK-ACCOUNT>
<AGE-REPLACE-IND>Y</AGE-REPLACE-IND
...
...
...
</MIM-UI>]]></ClaimIn></Audit></soap:Body></soap:Envelope>
recvresp(): entered
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: [5]ASP.NET
Date: Sun, 31 Mar 2013 23:15:46 GMT
Content-Length: 14099
and here is the result;
RECVDOC
SetError() #13: HTTP/1.1 200 OK
recvresp(): end with 200
recvdoc parms: identity 14099
header_load_cookies() entered
recvdoc(): entered
SetError() #0:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope
xmlns:soap="[6][5]http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="[7][6]http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="[8][7]http://www.w3.org/2001/XMLSchema"><soap:Body>
<AuditResponse
xmlns="[9][8]http://tempuri.org/McKessonAudit/Claim"><AuditResult>
<![CDATA[<?xml version="1.0"
standalone="yes"?><MIM-UI><CLAIM-GROUP><CLAIM-DATA>
;<CLAIM-ID>000140</CLAIM-ID><MEMBER-DOB>19540103</
MEMBER-DOB><MEMBER-GENDER>F</MEMBER-GENDER><CLAIM-LAS
T-LINE>
...
...
..
MSG-TEXT>13152 CAN ONLY BE DONE 1 TIME(S) ON SINGLE DATE;
DUPLICATE(S)
DENIED</MSG-TEXT></MESSAGE-ENTRY></MESSAGE-GROUP><
/MIM-UI>
]]></AuditResult></AuditResponse></soap:Body></soap:Envelope>
http_close(): entered
References
1. [9]http://schemas.xmlsoap.org/soap/envelope/
2. [10]http://www.w3.org/2001/XMLSchema-instance
3. [11]http://www.w3.org/2001/XMLSchema
4. [12]http://tempuri.org/McKessonAudit/Claim
5. [13]http://asp.net/
6. [14]http://schemas.xmlsoap.org/soap/envelope/
7. [15]http://www.w3.org/2001/XMLSchema-instance
8. [16]http://www.w3.org/2001/XMLSchema
9. [17]http://tempuri.org/McKessonAudit/Claim
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
[18]http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
References
1. http://schemas.xmlsoap.org/soap/envelope/
2. http://www.w3.org/2001/XMLSchema-instance
3. http://www.w3.org/2001/XMLSchema
4. http://tempuri.org/McKessonAudit/Claim
5. http://schemas.xmlsoap.org/soap/envelope/
6. http://www.w3.org/2001/XMLSchema-instance
7. http://www.w3.org/2001/XMLSchema
8. http://tempuri.org/McKessonAudit/Claim
9. http://schemas.xmlsoap.org/soap/envelope/
10. http://www.w3.org/2001/XMLSchema-instance
11. http://www.w3.org/2001/XMLSchema
12. http://tempuri.org/McKessonAudit/Claim
13. http://asp.net/
14. http://schemas.xmlsoap.org/soap/envelope/
15. http://www.w3.org/2001/XMLSchema-instance
16. http://www.w3.org/2001/XMLSchema
17. http://tempuri.org/McKessonAudit/Claim
18. http://www.scottklement.com/mailman/listinfo/ftpapi
------------------------------
-----------------------------------------------------------------------
This is the FTPAPI mailing list digest. To unsubscribe, go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
End of Ftpapi Digest, Vol 78, Issue 3
*************************************
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------