By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,776 Members | 1,351 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,776 IT Pros & Developers. It's quick & easy.

Desperate SProxy problem consuming an ASP.NET Web Service

P: n/a
Hi all,

I have written a web service using the .net framework 2 and Visual
Studio 2005. I consume the managed service by native C++ using the "add
web reference" feature. This obviously shells out sproxy.exe to
generate the proxy code.

All well and good despite the fact sproxy seems seriously in need of an
update and from what i can gather on other threads possible not going
to. I am in a situation where I cannot use C++/CLI and the native
support seems present but poor quality.

My problem is that I use SoapHeaders to pass in authentication data.
This is fine using the managed generated proxy but the native proxy
simply contains an empty structure with the name of the soapheader. It
contains no properties.

I have tried pretty much everything i can think of. Evidently sproxy
supports soap headers but I cannot even get them to work with simple
test code. Has anybody else had any luck? I guess this may be down to
the fact that wsdl.exe uses newer versions of the web services file
formats and protocols than sproxy supports.

Any help would be appreciated.

Kind Regards,
Mark Everett

Mar 15 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Hi again,

As an example if you run this through sproxy.exe /wsdl the generated
output includes a blank header. This is so simple and I cannot see
anything wrong with the markup. I have stripped a lot of the additional
wsdl output from the .asmx?wsdl resulting in the following:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://tempuri.org/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://tempuri.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">
<s:element name="HelloWorld">
<s:complexType />
</s:element>
<s:element name="HelloWorldResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="HelloWorldResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>

<s:element name="TestHeader" type="tns:TestHeader" />
<s:complexType name="TestHeader">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Test1"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Test2"
type="s:string" />
</s:sequence>
</s:complexType>

</s:schema>
</wsdl:types>

<wsdl:message name="HelloWorldSoapIn">
<wsdl:part name="parameters" element="tns:HelloWorld" />
</wsdl:message>
<wsdl:message name="HelloWorldSoapOut">
<wsdl:part name="parameters" element="tns:HelloWorldResponse" />
</wsdl:message>
<wsdl:message name="HelloWorldTestHeader">
<wsdl:part name="TestHeader" element="tns:TestHeader" />
</wsdl:message>

<wsdl:portType name="ServiceSoap">
<wsdl:operation name="HelloWorld">
<wsdl:input message="tns:HelloWorldSoapIn" />
<wsdl:output message="tns:HelloWorldSoapOut" />
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="HelloWorld">
<soap:operation soapAction="http://tempuri.org/HelloWorld"
style="document" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:HelloWorldTestHeader"
part="TestHeader" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

<wsdl:service name="Service">
<wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
<soap:address
location="http://localhost:3693/simpleService/Service.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Kind Regards,
Mark

Mar 16 '06 #2

P: n/a
Hi all,

The solution to this problem was to trick sproxy into outputting the
type data by creating a dummy method which uses the header type e.g.

[Web Method]
public AuthHeader Dumm(){ return null; }

Cheers,
Mark

Mar 22 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.