GetByteArrayAsync
GetByteArrayAsync у
HttpClient
читает ответ в byte[]. Заглушка
отдаёт UTF-8 текста "abcde"
длиной 5 байт.
Синтаксис
byte[] data = await client.GetByteArrayAsync("http://abcde.example/");
Пример
Давайте узнать длину массива:
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static async Task Main()
{
using HttpClient client = new HttpClient(new Stub());
byte[] data = await client.GetByteArrayAsync(
"http://abcde.example/");
int res = data.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Пример
Давайте декодировать байты в строку:
using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static async Task Main()
{
using HttpClient client = new HttpClient(new Stub());
byte[] data = await client.GetByteArrayAsync(
"http://abcde.example/");
string res = Encoding.UTF8.GetString(data);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте сравнить два скачивания:
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static async Task Main()
{
using HttpClient client = new HttpClient(new Stub());
byte[] first = await client.GetByteArrayAsync(
"http://abcde.example/");
byte[] second = await client.GetByteArrayAsync(
"http://abcde.example/");
bool res = first.Length == second.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
GetStringAsync,
строка ответа -
GetStreamAsync,
поток ответа -
GetAsync,
объект ответа -
HttpClient,
класс клиента