あきちゃんの飽き飽き備忘録

ほぼ死んでるブログ

HttpRequestMessageでGet・Post使用

初めまして、アキちゃんです。

備忘録をかねてブログを書くことにしました。

今回はHttpRequestMessageでGet・Post使用について書きます。

それでは早速・・・HttpRequestMessageでGet・Post使用

Lesson.1 事の発端

僕はC#狂なので基本的にすべてをC#で実装したいです。

なのでBlazorでHttpRequestMessageを使用してGet・Postしようと思います。

Lesson.2 Program.cs

C#でGet・Postを行うにおいていろんな方法がありますがHttpClientについてあまりこみいった実装をしたくないといった思いがあります。

qiita.com

なのでかわりに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 あとがき

以上!!