0

外部 API を使用しようとしていますが、返されるデータがチャンクされています。

Cache-control: max-age=7200
Content-Type: text/xml;charset=UTF-8
Vary: Accept-Encoding
P3P: CP="Anything"
ApacheTracking: localhost
Transfer-Encoding: chunked

問題を引き起こしています。Fiddler でデータを確認できますが、WebAPI プロジェクト内からコントローラーからデータを返そうとすると、何も返されません。私のコードは次のようになります。

// Try to get our products
using (var client = new HttpClient())
{
    var response = await client.GetAsync(signedUrl);

    return Ok(response);
}

しかし、クライアント アプリケーションにはデータがありません。ただし、200 の statusCode を返します。コントローラーにチャンクデータを返す方法を知っている人はいますか?

4

1 に答える 1

1

本体を再アセンブルする必要はありません。HttpClient がこれを行います。

HttpResponseMessageただし、実際には意図されていないをシリアル化しようとしているため、応答本文を読む必要があります。

クライアントに実際に何を返したいかによって、独自のデータ転送オブジェクトを導入するか、単純に文字列を返します。

using (var client = new HttpClient())
{
    var response = await client.GetAsync(signedUrl);

    var responseBody = await response.Content.ReadAsStringAsync();

    return Ok(responseBody);
}

または、API メソッドの戻り値の型が のTask<HttpResponseMessage>場合、API 呼び出しの応答を直接返すこともできます (Ok()シリアル化を行う でラップする必要はありません)。

return response;

しかし、サードパーティの API から API がリークするヘッダーとボディの値を制御できないため、私はそうしません。

于 2016-04-18T14:06:45.180 に答える