我正在使用ServiceSatck框架来使用休息服务。现在我想得到原始字节。 假设网址为http://xx.xxx.xxx.xx/Myservice/api/hello。
在这个Seeing the Http Response content in ServiceStack中它似乎使用了get方法,但我使用了post方法。
修改
我使用了代码
`var x = "http://xx.xxx.xxx.xx/Myservice/api/hello".PostJsonToUrl(new MyRequestDTO() { RequestData = hello }).ToArray();
我确实得到了原始字节。但是与RestSharp方法相比,大约有200个字节丢失。
使用RestSharp方法,代码为:
var aResponse = restClient.Execute(MyRequestDTO);
byte[] bytes = aResponse.RawBytes;
答案 0 :(得分:1)
ServiceStack's typed .NET clients的文档显示了如何访问原始字节:
byte[] responseBytes = client.Get<byte[]>("/poco/World");
var dto = responseBytes.FromUtf8Bytes().FromJson<PocoResponse>();
dto.Result //Hello, World
或者作为一个流:
using (Stream responseStream = client.Get<Stream>("/poco/World")) {
var dto = responseStream.ReadFully().FromUtf8Bytes().FromJson<PocoResponse>();
dto.Result //Hello, World
}
您甚至不需要使用类型客户端来获取原始字节,您可以轻松使用HTTP Util extension method:
byte[] rawBytes = "http://example.org/Myservice/api/hello".GetBytesFromUrl();
var dtoBytes = new MyRequestDTO { ... }.ToJson().ToUtf8Bytes();
var responseBytes = "http://example.org/Myservice/api/hello".PostBytesToUrl(
dtoBytes, contentType:"application/json");