1

ServiceSatck フレームワークで残りのサービスを使用しています。今、生のバイトを取得したいと思います。URL がhttp://xx.xxx.xxx.xx/Myservice/api/helloであるとします。

このServiceStack の HTTP 応答コンテンツを見ると、 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
}

raw バイトを取得するためにタイプ client を使用する必要さえありません。HTTP Util 拡張メソッドを同じように簡単に使用できます。

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

JSON を POST し、HTTP Utils 拡張機能を使用してバイトを取得する方法

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 に答える