Jak zdobyć już przeczytane treści
Mam klasę dziedziczącą z ApiController. Ma taką metodę Put:
[PUT("user/{UserId}")]
public HttpResponseMessage Put(string userId, PaymentRequest paymentRequest)
{
// Calling business logic and so forth here
// Return proper HttpResponseMessage here
}
Metoda działa dobrze tak jak powyżej. Teraz muszę sprawdzić poprawność podpisu wywołania metody, ale tutaj mam problem. Podpis jest zasadniczo kombinacją metody + URL + ciało. Metodę, którą mogę uzyskać, wywołując Request.Method i adres URL, który mogę uzyskać, wywołując Request.RequestUri.ToString (), ale nie mogę zdobyć ciała, tak jak byłoprzed był automatycznie deserializowany do obiektu PaymentRequest przez framework asp.net MVC4.
Moja pierwsza próba: Jak już zrozumiałem Request.Content.ReadAsStringAsync (). Wynik zwraca nic. Dzieje się tak, ponieważ treść można odczytać tylko raz.
Moja druga próba: Próbowałem go serializować z powrotem do łańcucha JSON.
var serializer = new JavaScriptSerializer();
var paymentRequestAsJson = serializer.Serialize(paymentRequest);
Problem polega na tym, że formatowanie jest nieco inne niż część podpisu. Ma te same dane, ale więcej przestrzeni.
Nie mogę zmienić tego, co wywołuje moja metoda Put-put, ponieważ jest to komponent innej firmy. Co powinienem zrobić?