Laden...

WCF SOAP Request - HTTP Header modifizieren

Erstellt von Mazo vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.635 Views
M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 13 Jahren
WCF SOAP Request - HTTP Header modifizieren

Hallo CSharper,

ich hab heut mal ein etwas anderes Problem...
Ich hab ein SOAP-Webservice (mit wsdl), den ich über eine von VS generierte Klasse anspreche. Die Klasse verwendet WCF. Leider benötige ich für die Kommunikation noch ein zusätzlichen HTTP-Header in jedem Request.

Ich hab versucht das exemplarisch für ein Request zu lösen mit:


public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
MessageHeader head = MessageHeader.CreateHeader("SessionToken", "", "abc123";);
OperationContext.Current.OutgoingMessageHeaders.Add(head);

_remoteClient.getStateAsync();
}
}


Leider habe ich dadurch den SOAP Header geändert:


....¬...??Í'..E..¬.?@.?.¢#À¨m²MM=×?.PÕý¢...?tP...ýÙ..POST /development/soap/api HTTP/1.1..Accept: */*..Referer: file:///Applications/Install/CC7A86AB-40DD-42A6-B92C-D66194FD7067/Install/..Content-Length: 311..Accept-Encoding: identity..Content-Type: text/xml; charset=utf-8..SOAPAction: ""..User-Agent: NativeHost..Host: 111.11.11.11..Connection: Keep-Alive..Cache-Control: no-cache....<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><SessionToken>123abc</SessionToken></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><getState xmlns="http://cl.url.de/" /></s:Body></s:Envelope>

Hat jemand eine Idee, wie ich an den HTML Header rankomme?

Danke für Eure Hilfe!
Mazo

M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 13 Jahren

Hallo,

ich hab eine Lösung gefunden, indem ich nicht den MessageHeader modifiziere, sondern das HttpRequestMessageProperty...

Hier der Code:


public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
request.Headers["SessionToken"] = "abcTokensTunWeh";
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = request;

_remoteClient.getStateAsync();
}
}

Evtl hilft es jemanden 😉

Viele Grüße