0

Windowsストア用のレストクライアントアプリを開発しています。受信した応答が 64K 未満になるまで、すべてが順調に進みました。進め方がわかりません。私は HttpClient を試し、アプリの機能を確認し、ほとんどのプロパティを検索して解決策を探しましたが、成功しませんでした。

ほとんどの人は HttpWebRequest.DefaultMaximumResponseHeadersLength または HttpWebRequest.MaximumResponseHeadersLength を設定することをお勧めしますが、Windows ストア アプリではこれらのプロパティを使用できません (?)。多分私はいくつかの参照を見逃しています。とにかく、私が思いついたすべてのアイデアを使い果たしたので、どんな提案も役に立ちます.

私が得ている例外:

System.Net.Http.HttpRequestException: 要求の送信中にエラーが発生しました。---> System.Net.WebException: 基になる接続が閉じられました: メッセージの長さの制限を超えました。

System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
で System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) で

--- 内部例外スタック トレースの終了 ---

System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク)
で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (タスク タスク)
で System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() ...

4

1 に答える 1

0

で使っHttpClient.GetAsync()てみてくださいHttpCompletionOption.ResponseHeadersRead。この方法では、応答はキャッシュされません。

すなわち:

private async void Foo()
{
    HttpClient client = new HttpClient();

    // Do not cache response, use HttpCompletionOption.ResponseHeadersRead.
    HttpResponseMessage response = await client.GetAsync(
        "http://localhost/?big=2000000000",
        HttpCompletionOption.ResponseHeadersRead);

    // Consume response as a System.IO.Stream.
    Stream contentStream = await response.Content.ReadAsStreamAsync();

    int bytesRead;
    do
    {
        byte[] buffer = new byte[1000000];
        bytesRead = contentStream.Read(buffer, 0, buffer.Length);
    } while (bytesRead > 0);
}
于 2013-11-14T20:44:44.530 に答える