2012-01-04 28 views
0

我有一个WCF Web服务运行接受以下(REST):WCF Web服务检查标头值和解析身体

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/StatusUpdate")] 
string SMSUpdateStatus(Stream input); 

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/ReceiveSMS")] 
string SMSReceived(Stream input); 

为了认证的要求,我需要传递的每个值相结合在POST(ContentType:application/x-www-form-urlencoded)中,用特定键对它们进行哈希处理,然后将其与特定标题值进行比较。

我用这样的事情有没有验证这个工作的罚款:

StreamReader sr = new StreamReader(input); 
string s = sr.ReadToEnd(); 
sr.Dispose(); 
NameValueCollection qs = HttpUtility.ParseQueryString(s)); 

string Val1= qs["val_a"]; 
string Val2= qs["val_b"]; 

我似乎无法弄清楚如何拉出一个标头值(这我需要为我做对比)或分割我的NameValueCollection,它似乎只是把我的整个有效载荷保存在一个键中。

回答

1

这或许是:

OperationContext.Current.IncomingMessageHeaders 

是服务?我还没有测试过这个,但我很想听听你的结果