ISS00889134 Exception occurred while processing the body of the message Webservice exception

Nilesh,

Check in your flow the inputs to the pub.math.addInts throwing NumberFormatException and this might causing the SOAP/HTTP failing.

HTH,
RMG.

Hi RMG,
Actually When I run my original service, it never throws this exception. But when I try to test the WebService connector and giving the same inputs, it throws this exception …

I went through the web service by running step by step in developer, but it never throws exception. When it calls service “pub.client:soapHTTP” …it gets the soapResponseData and that is what i posted here.

can you tell me how to debug this …??

-nilesh

Nilesh,

I believe the original flowservice that you have exposed,invoked by WSConnector is not getting the inputs that you have entered,which ultimately the Math service is failing.So make sure in the soapHTTP service “soapRequestData” param is creating properly.

HTH,
RMG

Nilesh,

You can also use pub.flow:tracePipeline in your wrapper service to see exactly what is getting passed in. Another approach is to create a test service that contructs the soapRequestData correctly and then invokes your wrapper service. You can use Developer’s “step into” function to see what is getting extracted from your soap message.

My guess is that there is an error in how the payload of your web service (request parameters) is being extracted from the soap body and converted to a document before being passed to pub.math:addInts. You’re not passing any values to the addInts input parms.

Mark

Hey RMG,

This the soapRequestData and it seems to be ok.

<?xml>
<soap-env:envelope>
<soap-env:body>
<wsdns1:test>
<num1>33</num1>
<num2>33</num2>
</wsdns1:test></soap-env:body>
</soap-env:envelope>


My service has input IS Doctype.
Which has root
Element “Test” (type=IS Doc) and two child elemennts, num1 (type=int) and num2(type=int2)

If you compare this with soapRequestData, it seems to be fine.

What is ur opinion after looking at it ?

  • nilesh

Hey RMG,
I m sorry, I copied only partial data for soapRequestData.

This is the full value of soapRequestData object:

<?xml>
<soap-env:envelope>
<soap-env:body>
<wsdns1:test>
<num1>33</num1>
<num2>33</num2>
</wsdns1:test></soap-env:body>
</soap-env:envelope>

  • nilesh

RMG,
when i copy and paste the text, it looks that it pasted all the text but after confirmation of the post, it displays only partial text. so i m attaching here the soapRequestData file.

  • nilesh

soapRequestData.xml
soapRequestData.xml (0.5 k)

Nilesh,

In the soapRequestData object which you have shown has <wsdns1:test> but your original service IS Doc has root Element “Test”.So that is why the math service is not able to get the inputs.
And also num1,num2 you declared as string variables that contain numeric values right?

Please make sure this and correct me if i am wrong.

HTH,
RMG.

RMG,
U r very right. The root element for the input document is “Test”. I dont know from where “wsdns1:” is got appended in “soapRequestData” object. I created two variables in developers num1 and num2 and then i applied content type as “int” from the field properties.

  • nilesh

Nilesh,

Just change content type as String in the field properties no need of explicitly setting as int(object)…

RMG,
I will try with those changes u said.
But can you explain what does the following paragraph from “Web Services Developers Guide” means :

“For example, suppose that the explicit universal name of the service
gl.journals:journalEntry has a namespace name of [url=“http://www.exprint.com/GL/”]http://www.exprint.com/GL/[/url] and a
local name of JournalEntry. The first top-level field of the IS document type that
describes the input signature must be named prefix:JournalEntry, where prefix
represents the XML namespace URI. Additionally, the value of the XML Namespace
property for the JournalEntry field must be [url=“http://www.exprint.com/GL/”]http://www.exprint.com/GL/[/url].

If I match my scenario and declares the namings according to what is said in above paragraph it would be like:

My Service name is:
my77824.WebService.Services:Test

Universal name for the service:
Namespace Name: [url]http://deveb1s/my77824[/url]
Local Name: Test

Input document while creating WSDL:
Test
|-- num1
|-- num2
The XML Namespace property of the root element “Test” is set to:
[url]http://deveb1s/my77824[/url]

Is anything wrong till these settings.
I didnt get in the above paragraph saying that :
" The first top-level field of the IS document type that
describes the input signature must be named prefix:JournalEntry, where prefix
represents the XML namespace URI".

In my case, the first top-level field of the IS Doc type is “Test”. is this enough? what do u say ? what would be the name of the top-level field ?

Thanks in advance and appreciate your prompt help.

  • nilesh

Nilesh,

I dont have deeper knowledge of webServices,but have done one project using SOAP RPC transport as webservice consumer,we didnt face any technical problems and its a straight foward.

May be you can look into the examples provided in the WmSamples/soap folder (sample.soap:buildMsg_sendHTTP)flow,and compare your steps.

HTH,
RMG.

RMG,
No probs. Anyways, U helped me a lot to resolve my problem. Thank you very much.
I dont know why its throwing NumberFormatExce[tion. I can run my original service without error. But when i try it running as web service, it throws exception.
Anyways, let me do some more R&D and find out , where do I go wrong .

Thanks again for all ur help.

If i get it resolved, i will post you soon.

Regards,
Nilesh

Nilesh,

you may try follow Mark sugesstions as mentioned above for debugging.

Goodluck,

Mark / RMG.
I did read your reply. But I didnt get exactly what you want to say. I try using service “savePipelineToFile” and check what is getting passed to my original service. When I invoke my web service, it passes two objects “soapRequestData” and “soapResponseData”.

what I do in my original service, is as follows:

Following all are related to original service:

Input/Output : pub.soap.utils:requestResponseSpec (standard spec)
Steps in my original flow service:

(1) pub.soap.utils:getBody
(2) pub.xml:xmlNodeToDocument
(3) pub.math:addInts
(4) pub.xml:documentToXMLString
(5) pub.xml:xmlStringToXMLNode
(6) pub.soap.utils:addBodyEntry

Explanation:

getBody –> extracts bodyEntry from soapRequestData

xmlNodeToDocument –> converts bodyEntry into IS Doc (which i mapped to my input IS document having two variables num1 & num2)

addInts –> i mapped num1 & num2 to the inputs of this service and output variable ‘value’, i mapped to my output document’s elements ‘value’

documentToXmlString –> output document is converted in XMLstring here

xmlStringToXmlNode –> XMLString is converted in XmlNode here

addBodyEntry –> XmlNode is added in the soapResponseData object.

can you tell me above is the correct method to process the soapRequestData and create soapResponseData ??

Please guide me. I tried everying which I could. still i m getting NumberFormatException:null and I guess because of nothing is being passed to ‘addInts’ service at runtime while we call web service.

  • nilesh

Nilesh,

Once you have the soapRequestData in the orignial service pipeline,
step thru the flow and debug.Have you did this?

Try changing the flow steps this way and step thru with restorepipelineToFile:

(1) pub.soap.utils:getBody(body)
(2)pub.xml:queryXMLNode (map the body to node and in the fields list specify query on num1,num2 to extract the required values and map to math service)–check the (sample.soap:targetSvc_defaultProc) WmSamples how to query.
(3) pub.math:addInts
(4) pub.xml:documentToXMLString
(5) pub.xml:xmlStringToXMLNode
(6) pub.soap.utils:addBodyEntry

HTH,
RMG.

RMG,

Thanks for your help. Now It is working properly. I havent used queryXMLNode yet. But there were some problem while mapping from soapBodyEntry to my document. Now it is working fine ( the service addInts).

I also want to try queryXMLNode and check how it works. I did not check the service in WmSamples which u specified in last post. I m also going to check how it is processing input soapRequestData.

Thank you very much again.

I might need your help while I go further in my development. I hope , I will get the same response in future.

Regards,
Nilesh

Hi,

I’m new to webMethods Web Services. Could you please let me know whether the following is possible or not with wm web services.

  1. Send custom SOAP fault(Faults other than those sent by Integration Server)
  2. How to deploy Web Service using ‘document style/literal encoding’

Thanks in advance,
pratap