@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)
{
}
@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; }
}
}