1

我正在使用 ServiceSatck 框架使用休息服务。现在我想获取原始字节。假设 url 是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;
4

1 回答 1

1

ServiceStack 的类型化 .NET 客户端的文档展示了如何访问原始字节:

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 扩展方法

byte[] rawBytes = "http://example.org/Myservice/api/hello".GetBytesFromUrl();

如何使用 HTTP Utils 扩展 POST JSON 和检索字节

var dtoBytes = new MyRequestDTO { ... }.ToJson().ToUtf8Bytes();
var responseBytes = "http://example.org/Myservice/api/hello".PostBytesToUrl(
  dtoBytes, contentType:"application/json");
于 2013-06-20T20:01:32.823 回答