Hinzufügen eines benutzerdefinierten SOAP-header mit c#/ASP.NET
Ich bin versucht, ein web-traffic-service. Ein Beispiel ist die SOAP-Anforderung ist unten gegeben.
Habe ich eine proxy-Klasse in c# mit Wsdl.exe aus der WSDL-Struktur.
Was ich denke, muss ich jetzt irgendwie einfügen 'authentifizieren' SOAP-header in der SOAP-Struktur für
der Aufruf der Methode. Ich bin mir nicht sicher, wie Sie die header, um die service-Methode aufgerufen?
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.inteleacst.com.au/wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<ns1:authenticate>
<SOAP-ENC:Struct>
<username>username</username>
<password>password</password>
</SOAP-ENC:Struct>
</ns1:authenticate>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getAllTraffic>
<States SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns1:State_Arr">
<item xsi:type="xsd:string">VIC</item>
<item xsi:type="xsd:string">NSW</item>
<item xsi:type="xsd:string">NT</item>
</States>
<EventCodes SOAP-ENC:arrayType="xsd:int[1]" xsi:type="ns1:EventCode_arr">
<item xsi:type="xsd:int">802</item>
</EventCodes>
</ns1:getAllTraffic>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Hier ist der code, der in der proxy-Klasse für den Aufruf der web service Methode.
[System.Web.Services.Protocols.SoapRpcMethodAttribute("http://webservice.intelecast.com.au/traffic/PublicSoap/server.php#getAllTraffic", RequestNamespace="http://webservice.intelecast.com.au/traffic/PublicSoap/server.php", ResponseNamespace="http://webservice.intelecast.com.au/traffic/PublicSoap/server.php")]
[return: System.Xml.Serialization.SoapElementAttribute("return")]
public TrafficInfo[] getAllTraffic(string[] States, int[] EventCodes) {
object[] results = this.Invoke("getAllTraffic", new object[] {
States,
EventCodes});
return ((TrafficInfo[])(results[0]));
}
InformationsquelleAutor James Hull | 2009-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suche im web fand ich einen forum post über ein sehr ähnliches problem und eine gute Lösung.
Finden Sie hier - forums.asp.net/t/1137408.aspx
InformationsquelleAutor James Hull
Hinzufügen von SOAP-Headern ist eines jener Dinge, die mich mehr verworren WCF im Vergleich zu den vorherigen "Add Web Service Reference" im Visual Studio .Net 2003/2005 und Erstellung einer SOAP-Erweiterung.
Tun es in der WCF müssen Sie einen EndPointBehavior. Es gibt durchaus ein paar Beispiele, um google auf IEndpointBehavior und IClientMessageInspector. Diese Artikel bietet eine schöne prägnante Beispiel, aber Sie müssen möglicherweise um es zu erweitern.
Die sollten Sie verwenden Sie eine SOAP-Erweiterung msdn.microsoft.com/en-us/library/....
Danke, ich habe erfolgreich eine SOAP-Erweiterung zu überwinden, das header-Problem.
InformationsquelleAutor sipwiz