Having trouble with implementing a SOAP header

F

Friso Wiskerke

Hi all,

I'm trying to use a webservice which is provided to me by a third party.
There are a number of webmethods that I can call but for each method I have
to supply a SOAP header which contains an identification-token. I've managed
to generate a proxy class using the wsdl.exe tool but the wsdl doesn't have
the SOAP header definition in it (quite frustrating).

I'm trying to enhance the generated class so that I can issue the header to
the webservice but I'm not having much luck.It should look like this
according to the documentation:
<soap:Header>
<AuthToken>ABCDEFGHIJKLMNOP</AuthToken>
</soap:Header>

Does anybody know how I can achieve this in my VB app (C# code samples are
also welcome)?

TIA,
Friso Wiskerke
 
J

Javier G. Lozano

SoapHeaders are generated as properties of your Proxy object you
created using WSDL. For your AuthToken header, it should be a property
such as

Proxy p = new Proxy();
p.AuthToken = "ABCEFGHIJKLMNOP";

Is this not the fact?
 
F

Friso Wiskerke

Javier,

I think this would be the case if the soap:Header definition is in the
WSDL... and for some reason it isn't. That's why I'm looking for a way to
add the header myself.

In the example you stated I assume the AuthToken is a string variable and
not a class that inherits from System.Web.Services.Protocols.SoapHeader. I
don't think that this property would result in a soap header when the
message is wrapped into a soap envelope by the proxy object.

Thanks,
Friso Wiskerke
 
C

CG

You might want to get wsdl file again.

If header is defined you should get that in WSDL file.

here is an example


<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://tempuri.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">
<s:import namespace="http://www.w3.org/2001/XMLSchema" />
- <s:element name="ApplicationBlockDataSet">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="custid" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="ApplicationBlockDataSetResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="ApplicationBlockDataSetResult">
- <s:complexType>
- <s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="mySoapHeader" type="tns:mySoapHeader" />
- <s:complexType name="mySoapHeader">
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="pwd" type="s:string" />
</s:sequence>
</s:complexType>
- <s:element name="ReturnCustomerOrders">
<s:complexType />
</s:element>
- <s:element name="ReturnCustomerOrdersResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReturnCustomerOrdersResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
- <wsdl:message name="ApplicationBlockDataSetSoapIn">
<wsdl:part name="parameters" element="tns:ApplicationBlockDataSet" />
</wsdl:message>
- <wsdl:message name="ApplicationBlockDataSetSoapOut">
<wsdl:part name="parameters" element="tns:ApplicationBlockDataSetResponse"
/>
</wsdl:message>
- <wsdl:message name="ApplicationBlockDataSetmySoapHeader">
<wsdl:part name="mySoapHeader" element="tns:mySoapHeader" />
</wsdl:message>
- <wsdl:message name="ReturnCustomerOrdersSoapIn">
<wsdl:part name="parameters" element="tns:ReturnCustomerOrders" />
</wsdl:message>
- <wsdl:message name="ReturnCustomerOrdersSoapOut">
<wsdl:part name="parameters" element="tns:ReturnCustomerOrdersResponse" />
</wsdl:message>
- <wsdl:portType name="Service1Soap">
- <wsdl:eek:peration name="ApplicationBlockDataSet">
<wsdl:input message="tns:ApplicationBlockDataSetSoapIn" />
<wsdl:eek:utput message="tns:ApplicationBlockDataSetSoapOut" />
</wsdl:eek:peration>
- <wsdl:eek:peration name="ReturnCustomerOrders">
<wsdl:input message="tns:ReturnCustomerOrdersSoapIn" />
<wsdl:eek:utput message="tns:ReturnCustomerOrdersSoapOut" />
</wsdl:eek:peration>
</wsdl:portType>
- <wsdl:binding name="Service1Soap" type="tns:Service1Soap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
- <wsdl:eek:peration name="ApplicationBlockDataSet">
<soap:eek:peration soapAction="http://tempuri.org/ApplicationBlockDataSet"
style="document" />
- <wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:ApplicationBlockDataSetmySoapHeader"
part="mySoapHeader" use="literal" />
</wsdl:input>
- <wsdl:eek:utput>
<soap:body use="literal" />
</wsdl:eek:utput>
</wsdl:eek:peration>
- <wsdl:eek:peration name="ReturnCustomerOrders">
<soap:eek:peration soapAction="http://tempuri.org/ReturnCustomerOrders"
style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:eek:utput>
<soap:body use="literal" />
</wsdl:eek:utput>
</wsdl:eek:peration>
</wsdl:binding>
- <wsdl:service name="Service1">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
- <wsdl:port name="Service1Soap" binding="tns:Service1Soap">
<soap:address
location="http://cgupta/dataapplicationblocktest/service1.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top