all groups > dotnet web services enhancements > june 2005 >
You're in the

dotnet web services enhancements

group:

How to get WSDL from a given URI


How to get WSDL from a given URI iffi
6/30/2005 12:00:00 AM
dotnet web services enhancements: I am writing a server application using SOAP over TCP (soap.tcp). I want to
generate a WSDL file from this uri "soap.tcp://localhost:8080/stockservice".
All I have heard is that its not possible to add a web referene as it
happens to generate proxy class for a http request ."If the SoapService
endpoint is bound to an HTTP endpoint, you can request the WSDL definition
by appending "?wsdl" to the endpoint address.However since the release of
WSE 2.0 and WS-Addressing many leading service providers are using TCP.The
"?wsdl" approach doesn't make sense for protocols such as TCP that don't
support the notion of a query string. MS has provided a generic way to get
WSDL Simply send a SOAP message with an action of
http://schemas.microsoft.com/wse/2003/06/RequestDescription
and an empty body, as illustrated here:"
--------------------------
soap:Envelope xmlns:wsa="..." xmlns:soap="..." ...>
<soap:Header>
<wsa:Action>http://schemas.microsoft.com/wse/2003/06/
RequestDescription</wsa:Action>
....
</soap:Header>
<soap:Body />
</soap:Envelope>

-----------------------------
Now I have created a method given below that returns the above mentioned
soap envlope, and further i m sending it from client program using
"sender.Subscribe(env)".

private static SoapEnvelope CreateSubscriptionMessage()
{
SoapEnvelope env = new SoapEnvelope();
XmlElement header = env.CreateHeader();
env.Envelope.AppendChild(header);
header.AppendChild(env.CreateElement("wsa:Action"));
header.FirstChild.InnerText=
"http://schemas.microsoft.com/wse/2003/06/RequestDescription";
Console.WriteLine(env.Envelope.InnerXml);

return env;
}

-------------------
I dont know how it will gonna return WSDL in response to this soap packet.
And how to recieve that WSDL ..
Could some body please provide or direct me to some sample by using which I
could receive WSDL and save it in a file.

thanks in advance

Re: How to get WSDL from a given URI Nathan Anderson [MSFT]
7/8/2005 9:20:07 AM
I have some code posted that will get the wsdl from a SoapService:

http://spaces.msn.com/members/nra314159/Blog/cns!1pYM-YN5bjuKTPUnvGkZ1b_Q!156.entry

Hope this helps.

Nathan Anderson [MSFT]

[quoted text, click to view]

Re: How to get WSDL from a given URI iffi raja
7/8/2005 4:45:13 PM
Thanks Nathan !!
I tried your suggested solution in a bit different way and it worked
fine. Even though i have got wsdl file its useless for VS to generate
proxy for it, which is a bug in VS and will be fixed in the november
release of VS 2005. The reason for this is that VS uses wsdl.exe utility
to generate proxy and we need to instruct VS to use new wsewsdl2.exe
instead of old one in order to generate proxy for Wse 2.0.

What i did is I have created a process in my client program and called
that wsewsdl2.exe utility to generate proxy from a running Endpoint. And
i saved that proxy file which I added in my client program to use it.

Yet another way was to write a small macro or add-in which could provide
the support for new wsdl utility. But it was just an idea which I didn't
try.

thanks Nathan again
regards
iffi

AddThis Social Bookmark Button