Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DotNETFrameworkNotesForProfessionals.pdf
Скачиваний:
32
Добавлен:
20.05.2023
Размер:
1.82 Mб
Скачать

Chapter 56: HTTP clients

Section 56.1: Reading GET response as string using System.Net.HttpClient

HttpClient is available through NuGet: Microsoft HTTP Client Libraries.

string requestUri = "http://www.example.com"; string responseData;

using (var client = new HttpClient())

{

using(var response = client.GetAsync(requestUri).Result)

{

response.EnsureSuccessStatusCode();

responseData = response.Content.ReadAsStringAsync().Result;

}

}

Section 56.2: Basic HTTP downloader using System.Net.Http.HttpClient

using System; using System.IO; using System.Linq;

using System.Net.Http;

using System.Threading.Tasks;

class HttpGet

{

private static async Task DownloadAsync(string fromUrl, string toFile)

{

using (var fileStream = File.OpenWrite(toFile))

{

using (var httpClient = new HttpClient())

{

Console.WriteLine("Connecting...");

using (var networkStream = await httpClient.GetStreamAsync(fromUrl))

{

Console.WriteLine("Downloading...");

await networkStream.CopyToAsync(fileStream); await fileStream.FlushAsync();

}

}

}

}

static void Main(string[] args)

{

try

{

Run(args).Wait();

}

catch (Exception ex)

{

if (ex is AggregateException)

ex = ((AggregateException)ex).Flatten().InnerExceptions.First();

GoalKicker.com – .NET Framework Notes for Professionals

173

Console.WriteLine("--- Error: " + (ex.InnerException?.Message ?? ex.Message));

}

}

static async Task Run(string[] args)

{

if (args.Length < 2)

{

Console.WriteLine("Basic HTTP downloader"); Console.WriteLine();

Console.WriteLine("Usage: httpget <url>[<:port>] <file>"); return;

}

await DownloadAsync(fromUrl: args[0], toFile: args[1]);

Console.WriteLine("Done!");

}

}

Section 56.3: Reading GET response as string using System.Net.HttpWebRequest

string requestUri = "http://www.example.com"; string responseData;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(parameters.Uri); WebResponse response = request.GetResponse();

using (StreamReader responseReader = new StreamReader(response.GetResponseStream()))

{

responseData = responseReader.ReadToEnd();

}

Section 56.4: Reading GET response as string using System.Net.WebClient

string requestUri = "http://www.example.com"; string responseData;

using (var client = new WebClient())

{

responseData = client.DownloadString(requestUri);

}

Section 56.5: Sending a POST request with a string payload using System.Net.HttpWebRequest

string requestUri = "http://www.example.com"; string requestBodyString = "Request body string."; string contentType = "text/plain";

string requestMethod = "POST";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri)

{

Method = requestMethod, ContentType = contentType,

};

GoalKicker.com – .NET Framework Notes for Professionals

174

byte[] bytes = Encoding.UTF8.GetBytes(requestBodyString); Stream stream = request.GetRequestStream(); stream.Write(bytes, 0, bytes.Length);

stream.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Section 56.6: Sending a POST request with a string payload using System.Net.WebClient

string requestUri = "http://www.example.com"; string requestBodyString = "Request body string."; string contentType = "text/plain";

string requestMethod = "POST";

byte[] responseBody;

byte[] requestBodyBytes = Encoding.UTF8.GetBytes(requestBodyString);

using (var client = new WebClient())

{

client.Headers[HttpRequestHeader.ContentType] = contentType;

responseBody = client.UploadData(requestUri, requestMethod, requestBodyBytes);

}

Section 56.7: Sending a POST request with a string payload using System.Net.HttpClient

HttpClient is available through NuGet: Microsoft HTTP Client Libraries.

string requestUri = "http://www.example.com"; string requestBodyString = "Request body string."; string contentType = "text/plain";

string requestMethod = "POST";

var request = new HttpRequestMessage

{

RequestUri = requestUri, Method = requestMethod,

};

byte[] requestBodyBytes = Encoding.UTF8.GetBytes(requestBodyString); request.Content = new ByteArrayContent(requestBodyBytes);

request.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);

HttpResponseMessage result = client.SendAsync(request).Result; result.EnsureSuccessStatusCode();

GoalKicker.com – .NET Framework Notes for Professionals

175