I have two questions that I hope y'all can help me with. Here's a little background on why I'm bothering y'all. We've got a bunch of java interfaces being used via RMI, now we want to expose them via web services, too. We do our own authentication, so I was thinking the easiest thing is to have the client call the authentication method, and then pass the resulting authentication token as a header arg-that way the existing java interfaces don't need to change.
Question 1) I'm also not such a smartie about wsdl. (I'm sure you're wondering if I'm a smartie about anything ;-) ) The WSDL for my service is below. It works just fine with WSDL2Java, and the generated Java client stubs do just what I want them to. However, when I Add Web Reference in .NET, it gives an error, "the element attribute is not allowed on encoded message parts". If I change the part specification from "<wsdl:part element="intf:authToken" name="auth_header"/>" to "<wsdl:part type="intf:authToken" name="auth_header"/>", it says "The datatype 'authToken' is missing.", and WSDL2Java says the same thing. If I undo that change and change the operation to be literal, then it says that "The combination of style=rpc with use=literal is not supported." If I change it to style=document, it says "Unable to import operation 'getExchangeRate'. Specified cast is not valid." Would someone take pity on the noob and help me with my WSDL? Question 2) I know virtually nothing about c#, but someone gave me a test program that calls a web service. I was able to figure out how to add my web service to the environment, and add a call to it from the little program, but what do I do about header args? Could someone help me figure how to pass a SOAP header argument on the call? Or will this problem be magically solved once I can successfully import the web service? Here's the code I have: FirstSOAPTest.CurrencyService.CurrencyWebServiceService curServ = new FirstSOAPTest.CurrencyService.CurrencyWebServiceService(); // The value of a proper authToken is in this.textBoxAuthReturn.Text double s = curServ.getExchangeRate(); The WSDL is what was generated by Axis, and then I added the bits about a header arg (the parts I added are surrounded by blank lines). Here's my WSDL: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost:8080/avalanche/services/currency" xmlns:impl="http://localhost:8080/avalanche/services/currency" xmlns:intf="http://localhost:8080/avalanche/services/currency" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- added by me --> <wsdl:types> <xsd:schema targetNamespace="http://localhost:8080/avalanche/services/currency" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://localhost:8080/avalanche/services/.xsd1"> <xsd:element name="authToken"> <xsd:complexType> <xsd:all> <xsd:element maxOccurs="1" minOccurs="1" name="value" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <!-- end addition --> <!-- added by me --> <wsdl:message name="getExchangeRateRequest"> <wsdl:part type="intf:authToken" name="auth_header"/> </wsdl:message> <!-- end addition --> <wsdl:message name="getExchangeRateResponse"> <wsdl:part name="getExchangeRateReturn" type="xsd:double"/> </wsdl:message> <wsdl:portType name="CurrencyWebService"> <wsdl:operation name="getExchangeRate"> <wsdl:input message="impl:getExchangeRateRequest" name="getExchangeRateRequest"/> <wsdl:output message="impl:getExchangeRateResponse" name="getExchangeRateResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="currencySoapBinding" type="impl:CurrencyWebService"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <!-- added by me --> <wsdl:operation name="getExchangeRate"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getExchangeRateRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://currency.examples.ecm.opentext.com" use="encoded"/> <wsdlsoap:header encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" message="impl:getExchangeRateRequest" part="auth_header" use="encoded"/> </wsdl:input> <wsdl:output name="getExchangeRateResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:http://localhost:8080/avalanche/services/currency" use="encoded"/> </wsdl:output> </wsdl:operation> <!-- end addition --> </wsdl:binding> <wsdl:service name="CurrencyWebServiceService"> <wsdl:port binding="impl:currencySoapBinding" name="currency"> <wsdlsoap:address location="http://localhost:8080/avalanche/services/currency"/> </wsdl:port> </wsdl:service> </wsdl:definitions> -- 'Peace is not merely a distant goal that we seek, but a means by which we arrive at that goal' Dr. M. L. King, Jr. Todd Grinnell ( mailto:[EMAIL PROTECTED] ) Open Text Corp. Chicago 'burbs, IL Contact me for a public key