ServiceStack のすべての C# サービス クライアントには、グローバル リクエスト フィルターとローカル リクエスト フィルターの両方があり、リクエストとグローバル レスポンス フィルターとローカル レスポンス フィルターを初期化して、返された HttpWebResponse にきめ細かくアクセスできます。
グローバル リクエスト フィルターを使用して、すべての ServiceClients の WebRequest を初期化します。
ServiceClientBase.HttpWebRequestFilter = httpReq => ConfigureWebClient(httpReq);
ローカル リクエスト フィルタの使用:
var client = new JsonServiceClient(baseUrl) {
LocalHttpWebRequestFilter = httpReq => ConfigureWebClient(httpReq)
};
string
ただし、バイナリ応答だけが必要な場合は、すべてのサービス クライアントでbyte[]
、、、Stream
またはのいずれかを汎用応答タイプとして指定でき、HttpWebResponse
要求されたものが返されます。これらの他の例については、Service Client wiki ページを参照してください。
バイナリ レスポンスを取得する方法は次のとおりです。
byte[] responseBytes = client.Get<byte[]>("/poco/World");
var dto = responseBytes.FromUtf8Bytes().FromJson<PocoResponse>();
またはストリームで:
using (Stream responseStream = client.Get<Stream>("/poco/World")) {
var dto = responseStream.ReadFully().FromUtf8Bytes().FromJson<PocoResponse>();
}
または、基になる HttpWebResponse から:
HttpWebResponse webResponse = client.Get<HttpWebResponse>("/poco/World");
using (var stream = webResponse.GetResponseStream())
using (var sr = new StreamReader(stream)) {
var dto = sr.ReadToEnd().FromJson<PocoResponse>();
}
オープン ソース ソフトウェアは変更できます。回避する必要はありません。
ServiceStack はオープン ソース ソフトウェアです。ハッキングを探したり、アクセスできないものや利用できないものを回避しようとする必要はありません。プル リクエストを作成して、必要なものを変更します。それが一般的なユース ケースの有効なリクエストである場合は、受け入れられる可能性があります。それ以外の場合は、ソース コードのフォークを自由に取得して、必要に応じてカスタマイズしてください。