Unexpected response from WebMethods webserice when invoked from .Net client.

Hi All,
We have this .Net application and webMethods IS in our solution and the integration between them is via webServices in both directions (several of them).

I manage to successfully establish connection to .Net application from WM and get valid response back, however when we tried invoking WM service as web service from .Net (WSDL was produced by WM Developer) the service send back data with unexpected tags in it. Also WM doesn’t actually receive any data at their end so when I try doing savePipeline or restorePipeline I’ve completely empty pipeline although you can see in the service usage log the service was executed.

To simplify the problem I created flow service called testWC which accepts input testString and no output. This service calls pub.flow:debugLog and pass this input to debugLog service.

This service runs fine from Developer and from browser with url like http://host:port/invoke/APatel/testWC?testString=blah and it works.

If I make webservice call to this URL passing in the value, response is following(I captured this using Ethereal).

Request

POST /invoke/APatel/testWC HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.1.4322.2300)
Content-Type: text/xml; charset=utf-8
SOAPAction: “”
Content-Length: 560
Expect: 100-continue
Connection: Keep-Alive
Host: 192.168.32.28

 <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="[URL="http://schemas.xmlsoap.org/soap/envelope/"]http://schemas.xmlsoap.org/soap/envelope/[/URL]"
xmlns:soapenc="[URL="http://schemas.xmlsoap.org/soap/encoding/"]http://schemas.xmlsoap.org/soap/encoding/[/URL]"
xmlns:tns="[URL="http://192.168.32.78/"]http://192.168.32.78/[/URL]"
xmlns:types="[URL="http://192.168.32.78/encodedTypes"]http://192.168.32.78/encodedTypes[/URL]"
xmlns:xsi="[URL="http://www.w3.org/2001/XMLSchema-instance"]http://www.w3.org/2001/XMLSchema-instance[/URL]" xmlns:xsd="<A href="http://www.w3.org/2001/XMLSchema"><soap:Body">http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="<A href="http://schemas.xmlsoap.org/soap/encoding/"><q1:testWC">http://schemas.xmlsoap.org/soap/encoding/">
<q1:testWC xmlns:q1="<A href="http://192.168.32.78/Apatel"><testString">http://192.168.32.78/Apatel">
<testString xsi:type="xsd:string">ad</testString>
</q1:testWC>
</soap:Body>
</soap:Envelope>

HTTP/1.0 200 OK

================================================
Response

Set-Cookie: ssnid=1764HdVcccoNgc6UdJgPHACUoub9XHw-555528; path=/;
Content-Type: text/xml; charset=UTF-8
Connection: Keep-Alive
Content-Length: 145

 <?xml version="1.0" encoding="UTF-8"?>
<Values version="2.0">
  <value name="function">testWC</value>
  <value name="level">2</value>
</Values>

================================================

.Net throws error as it doesn’t like this <Values tag in response as WSDL didn’t specify any response back from this webservice.

Would any of you can please throw some light on this problem?

Thanks heaps in advance.

Ashish Patel

So you are getting a response back from the web service even though you do not have one defined via the WSDL? If that is the case, check your pipeline in the flow service. Are you doing an RPC based service? Whatever you have in the pipeline at the end of the service can get sent back to the calling service as a response in a RPC based service in webMethods. So if the last step of your try sequence in your flow service has a couple of variables in it, they could end up in the response. Try clearing out your pipeline and consider using Doc/Literal instead.

Hi Mark,

There are two problems. But before I jump in to the probems I’ll confirm that I was using SOAP-RPC as protocol for webservice call.

Problems
1.> The input data doesn’t arrive in the service in webMethods, even though service is executed (I can see it in service usage)
2.> unrequired data is available in output.

Sorry to sound bit naive, but can you please tell me little bit for how I can create WSDL to use Doc/Literal instead of RPC ? The thing is .Net developer will use whatever WSDL I’ll give and I’m not sure how you can generate WSDL to use Doc/Literal based service.

Appreciate your help

Regards,

Ashish

Ashish,

The sticky thread in this forum may help.

Mark

Ohh boy,

I figured that the .Net application was pointing to http://host:port/invoke/APatel/testWC?testString=blah even from it’s client which was basically then sending the whole of SOAP env as a input to WM service and because I wasn’t expecting it in the XML format service will ignore it.

Anyway it changed to point to http://host:port/soap/rpc and started working.

I still have to work out if the Doc/Literal is the way to go for web services.

Thanks Mark.

Ashish

All,

I have to do a similar integrationand this is the first time i am implementing webServices.
We have a website which is .NET based application. I have a webMethods service which i created a WSDL and then a connector. This is more like a tracking website where the user enters a tracking number. .NET application has to send this tracking number to webMethods service and the WMservice has to return an XML back to the .NET application.

What should i be providing to the .NET guy to invoke the WMservice ? (Is the pat of the service enough ? what’s with the connector ?)
What should i do to send out the output to the website? (can I just set Response and send the XML in it)
Should i be providing the WSDL files to them ?
Do i have the necessity to take their WSDL files ?

Your help is appreciated. This thread is a bit high level to me. So i am asking this basic questions.

Thanks again