Hi All,
I have a flow service which is supposed to receive an XML posted thru http post. The http request is sent by a Siebel System.
The XML doc sent does not have any variable associated with it.
I have tried puttin ‘node’ in my service input, but still my service does not receive any XML data.
Also, is there a way to test run this service at my end without bothering the Siebel team members. I thought testing thru IE, but then how would an XML be passed ?
The http post from Siebel should set the content type to text/xml, if the body of the html is indeed an XML message. Then the XML will be automatically parsed by the IS content handler and a node object will be passed to your service.
One way to test is to use Test | Send XML File… You normally can’t use a browser because it doesn’t provide a way to set the content type.
What you mean by this “Problem with the request sent is that there isn’t any variable pointing to the XML data”…
Is your Siebel application not sending xml string or bytes or stream to your IS/service?? Also they should send Content-Type=text/xml while they Http post the XML.
In any case your service input should be node (object) in order to receive that XML successfully and the first step is XMLNodeToDocument (inputs node).So put some debug services savepipeline/restorepipeline and check whats going on behind the scenes.
Please elaborate more details on your receiving service,external http post details to your IS etc…
I meant that the service is unable to point to the XML data though the input had a ‘node’ mentioned.
Anyways, the problem is solved now. I guess setting content-type was the key.
Thank you
For future reference, when testing sending XML over HTTP/s to a service, doing what Rob suggested (using the Developer’s Test → Send XML File… option) is one of the easiest options.
However, if you want to test using a browser, then you can create an HTML form that has a TEXTAREA, for example, where you will enter your XML. The trick though is to name the TEXTAREA $xmldata. When the IS receives an URL-encoded HTTP request, it looks for that $xmldata variable and passes the XML within it to the target service.
The content-type of HTTP-Post is application/xml which is by default handled by wm.EDIINT.ContentHandler_EDIINT. The input to my service is stream. when I go for streamtostring the resultant string has both HTTP header and data. Is their any other mean do tht I only get HTTP data and not header
I feel problem is solved. Actually the content type of the data in http post is application/xml. After executing ServerAPI.getContentType(“application/xm”), it ws found that content handler is EDIINT content handler which gives data in variable ‘stream’.
So I used stream as an input to my service invoked via http post. I got the data posted by streamToString. the only issue now is the resultant string has both http header and data seperated by an emty line.
I wanted to know the input to the service so tht I only get data and not header
At this situation,work around would be using tokenize service with delimiter (newline or carriage return) and extract the ouput valuelist[1] to a new string (this will have data) that you are looking for.