У меня запущена веб-служба WCF, которая принимает следующее (REST):
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/StatusUpdate")]
string SMSUpdateStatus(Stream input);
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/ReceiveSMS")]
string SMSReceived(Stream input);
Чтобы аутентифицировать запрос, мне нужно объединить каждое значение, переданное в приложении POST (ContentType:/ 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, которая, кажется, просто хранит всю мою полезную нагрузку в одном ключе.