2013-09-23 9 views
5

Ich habe gerade angefangen, Anfragen an meinen WCF-Dienst abzufangen.WCF AfterReceiveRequest Kopfzeilen erhalten

Ich rufe den Webdienst mit Java-Code, die

connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Username", "Testname"); 

Ich erhalte die Anfrage wie diese (kurze Version) aussieht, aber ich kann nicht die Header in der Nachricht Anfrage erhalten/finden. Ich habe so etwas versucht:

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext) 
{ 
    int headerIndex = request.Headers.FindHeader("Username", string.Empty); 
    var username = request.Headers["Username"] 

    return null; 
} 

Aber ich am Ende immer mit -1 oder Ausnahmen. Was ist der richtige Weg? Tue ich es auch auf der Java-Seite falsch?

Antwort

12

Die Headers Eigenschaft in der Message Klasse gibt Ihnen die SOAP Header; Was Sie suchen, sind die HTTP Header. Um zu diesen zu gelangen, sollten Sie die HttpRequestMessageProperty:

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) 
    { 
     var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; 
     var userName = prop.Headers["Username"]; 

     return null; 
    } 
+0

Vielen Dank! So schwer, Dokumentation für genau das zu finden .. –

Verwandte Themen