@using System.Net @using System.Net.Http @inject Microsoft.AspNetCore.Blazor.Browser.Services.Temporary.HttpClient Http

HTTP request tester

URI:
{ uri = (string)value; }) size="60"/>

Method:

Request body:

Request headers:
@foreach (var header in requestHeaders) {
Name: { header.Name = (string)value; }) /> Value: { header.Value = (string)value; }) /> [ RemoveHeader(header))>remove]
}

@if (responseStatusCode.HasValue) {

Response

Status:
@responseStatusCode

Body:

Headers:

} @functions { string uri = "http://api.icndb.com/jokes/random"; string method = "GET"; string requestBody = ""; List requestHeaders = new List(); HttpStatusCode? responseStatusCode; string responseBody; string responseHeaders; async void DoRequest() { responseStatusCode = null; try { var requestMessage = new HttpRequestMessage() { Method = new HttpMethod(method), RequestUri = new Uri(uri), Content = string.IsNullOrEmpty(requestBody) ? null : new StringContent(requestBody) }; foreach (var header in requestHeaders) { if (!requestMessage.Headers.TryAddWithoutValidation(header.Name, header.Value)) { requestMessage.Content?.Headers.TryAddWithoutValidation(header.Name, header.Value); } } var response = await Http.SendAsync(requestMessage); responseStatusCode = response.StatusCode; responseBody = await response.Content.ReadAsStringAsync(); var allHeaders = response.Headers.Concat(response.Content?.Headers ?? Enumerable.Empty>>()); responseHeaders = string.Join( Environment.NewLine, allHeaders.Select(pair => $"{pair.Key}: {pair.Value.First()}").ToArray()); } catch (Exception ex) { if (ex is AggregateException) { ex = ex.InnerException; } responseStatusCode = HttpStatusCode.SeeOther; responseBody = ex.Message + Environment.NewLine + ex.StackTrace; } StateHasChanged(); } void AddHeader() => requestHeaders.Add(new RequestHeader()); void RemoveHeader(RequestHeader header) => requestHeaders.Remove(header); class RequestHeader { public string Name { get; set; } public string Value { get; set; } } }