Get HttpResult using the JsonServiceClient

2019-02-10 08:07发布

问题:

I am returning HttpResult from one of the rest service methods using servicestack's new API. Is there a way to get the HttpResult using the JsonServiceClient?

For ex: JSonServiceClient.Send<HttpResult>("DELETE","person", new { PersonID = 30 });

I want to inspect the header information from the httpresult.

Thanks.

回答1:

There's no such thing as a HttpResult client response from a ServiceStack web service.

You use a HttpResult to customize the HTTP Response that's returned from your service, e.g. Add additional HTTP Headers. But the response body the client sees is still only the Response DTO (if any).

Use fiddler, wireshark, chome web inspector (if this is an Ajax call) or something like ServiceStack's Request Logger plugin to inspect the HTTP traffic.

Invalid use of ServiceStack's REST Clients

Also consider using the appropriate Clients REST API like client.Delete(), client.Get() etc instead of overloading the T.Send() method (which is usually a POST).

Use Typed DTOs in the ServiceClient instead of anonymous types which are not supported.

Inspecting HTTP Headers using the ServiceStack Service Clients

ServiceStack's Service Clients provide Local and Global WebResponse (and Request) filters that you can use to introspect the WebClient's HttpWebResponse returned for that request, e.g:

client.ResponseFilter = httpRes => {
   httpRes.Headers.. //do something with returned headers
};
client.Delete(new Person { Id = 30, ...});