初めまして、アキちゃんです。
備忘録をかねてブログを書くことにしました。
今回はHttpRequestMessageでGet・Post使用について書きます。
それでは早速・・・HttpRequestMessageでGet・Post使用!
Lesson.1 事の発端
なのでBlazorでHttpRequestMessageを使用してGet・Postしようと思います。
Lesson.2 Program.cs
C#でGet・Postを行うにおいていろんな方法がありますがHttpClientについてあまりこみいった実装をしたくないといった思いがあります。
なのでかわりにIHttpClientFactoryを使用したいので以下のコードを追記します。
builder.Services.AddHttpClient();
Lesson.3 HttpRequestMessage - Get
Getはまあこれといった必要なことはありません。
ただ0000は各Post番号に左右されます。
@inject IHttpClientFactory ClientFactory
var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:0000" + controllerPath);
var client = ClientFactory.CreateClient();
var response = await client.SendAsync(request);
var getVal = await response.Content.ReadAsStringAsync();
Lesson.4 HttpRequestMessage - Post
Postも基本は送り付けるだけなんですが、ファイル等をアップロードするときだけ注意が必要です。
@inject IHttpClientFactory ClientFactory
var request = new HttpRequestMessage(HttpMethod.Post, "https://localhost:0000" + controllerPath);
var client = ClientFactory.CreateClient();
{
var content = new MultipartFormDataContent();
content .Add(new StringContent(JsonSerializer.Serialize<JsonSample>(new JsonSample() { Number = docNumber, Content = value }), Encoding.UTF8, "application/json"), "file", "test.json");
request.Content = content ;
using (var response = await client.SendAsync(request)) ;
}
上で使っているJsonのクラス(JsonSample)は以下です。
public class JsonSample
{
[JsonPropertyName("number")]
public int Number { get; set; }
[JsonPropertyName("content")]
public string? Content { get; set; }
}
一つ気を付けなければいけないのはcontent.Add()をする際第二引数は"file"でないと上手く動きません。
また、送るものに応じてcontent .Add(new StringContent())のAddするContentが変わります。
Lesson.5 あとがき
以上!!