Как получить ответ на POST в виде byte[]?
string postData = "post string";
byte[] data = Encoding.ASCII.GetBytes(postData);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://122.233.155.155:80");
req.Method = "POST";
req.ContentLength = postData.Length;
req.Timeout = 10000;
using (Stream stream = req.GetRequestStream()) stream.Write(data, 0, data.Length);
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
{
string s = reader.ReadToEnd();
Console.WriteLine(s);
}
Так получаю ответ в виде string, а как получить в виде массива байтов byte[] ?
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
Не используйте StreamReader, так как он предназначен для чтения текста.
Взамен можно использовать промежуточный MemoryStream.
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
using (Stream stream = response.GetResponseStream())
using (MemoryStream memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
byte[] bytes = memoryStream.ToArray();
}
Кроме того, используйте асинхронный код:
using (Stream stream = await req.GetRequestStreamAsync())
await stream.WriteAsync(data, 0, data.Length);
using (HttpWebResponse response = (HttpWebResponse)await req.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (MemoryStream memoryStream = new MemoryStream())
{
await stream.CopyToAsync(memoryStream);
byte[] bytes = memoryStream.ToArray();
}