2013-09-23 32 views
5

Tôi vừa bắt đầu chặn các yêu cầu đối với dịch vụ WCF của mình.WCF AfterReceiveRequest nhận tiêu đề

Tôi gọi dịch vụ web với mã java trông như thế này (phiên bản ngắn)

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

tôi nhận được yêu cầu nhưng tôi không thể nhận được/tìm các tiêu đề trong yêu cầu thông báo. Tôi đã thử một cái gì đó như thế này:

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; 
} 

Nhưng tôi luôn kết thúc bằng -1 hoặc ngoại lệ. Cách đúng để làm điều này là gì? Tôi có làm sai ở phía Java không?

Trả lời

12

Thuộc tính Headers trong lớp Message sẽ cung cấp cho bạn các tiêu đề SOAP; những gì bạn đang tìm kiếm là các tiêu đề HTTP. Để có được những thứ đó, bạn nên sử dụng số 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

Cảm ơn bạn! Thật khó để tìm tài liệu chỉ cho điều đó .. –

Các vấn đề liên quan