目次
WebApiSample2(VS2017)
コントローラー (Controllers/RequestController.cs
)
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Text;
using YourProject.Models; // モデルクラスの名前空間を適宜変更してください
namespace YourProject.Controllers
{
[Route("api/order")]
public class RequestController : Controller
{
[HttpPost]
public IActionResult RequestOrder([FromBody] OrderRequest request)
{
if (request == null)
{
return BadRequest("Invalid request");
}
// リクエスト処理のロジック
request.RequestNo = DateTime.Now.ToString("yyyyMMddHHmm0001");
// 他のプロパティのセット...
byte[] byteArray1 = { 72, 101, 108, 108, 111 }; // "Hello"
string[] stringArray = new string[] { Encoding.UTF8.GetString(byteArray1) };
OrderRequestFile ofile = new OrderRequestFile
{
FileName = "FileName1",
FileHash = string.Join(" ", byteArray1)
};
List<OrderRequestFile> ofiles = new List<OrderRequestFile>();
ofiles.Add(ofile);
request.File = ofiles;
return Ok(request);
}
}
}
モデルクラス (Models/OrderRequest.cs
)
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace YourProject.Models
{
public class OrderRequest
{
[Required]
public string RequestNo { get; set; }
// 他のプロパティの定義...
[Required]
public List<OrderRequestFile> File { get; set; }
}
}
ファイルモデルクラス (Models/OrderRequestFile.cs
)
using System.ComponentModel.DataAnnotations;
namespace YourProject.Models
{
public class OrderRequestFile
{
[Required]
public string FileName { get; set; }
[Required]
public string FileHash { get; set; }
}
}
Startup.cs
の設定
.NET Core 2.2では、Startup.cs
ファイルでアプリケーションの設定を行います。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// 他のサービスの設定...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
Windowsアプリケーション
ステップ 1: プロジェクトの準備
- Windows Formsアプリケーションプロジェクトを作成します。
- 必要に応じて、
Newtonsoft.Json
NuGetパッケージをプロジェクトに追加します。
ステップ 2: フォームのデザイン
- フォームにボタンを追加します。
- ボタンの
Click
イベントをダブルクリックして、イベントハンドラを作成します。
ステップ 3: ボタンのイベントハンドラにコードを追加
以下は、ボタンのClick
イベントハンドラに追加するコードの例です。この例では、非同期操作を行うためにasync
およびawait
キーワードを使用しています。
using System;
using System.Net.Http;
using System.Text;
using System.Windows.Forms;
using Newtonsoft.Json;
using YourProject.Models; // モデルクラスの名前空間を適宜変更してください
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private async void YourButton_Click(object sender, EventArgs e)
{
var client = new HttpClient();
// リクエストを作成
var request = new OrderRequest
{
// プロパティの設定...
};
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
// APIエンドポイントへのPOSTリクエスト
var response = await client.PostAsync("http://localhost:[ポート]/api/order", content);
if (response.IsSuccessStatusCode)
{
MessageBox.Show("リクエスト成功", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
var responseContent = await response.Content.ReadAsStringAsync();
// 応答内容を処理...
}
else
{
MessageBox.Show("リクエスト失敗", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
このコードでは、ボタンがクリックされると、HttpClient
を使用してWeb APIにPOSTリクエストを送信します。リクエストの成否に応じて、メッセージボックスでユーザーに通知します。
注記
[ポート]
は、Web APIがホストされているローカルIISのポート番号に置き換えてください。- この例では
OrderRequest
クラスとそのプロパティは省略されています。実際のプロジェクトでの使用には、適切なモデルクラスを定義してください。 - ネットワーク操作を行うため、適切なエラーハンドリングを実装することが重要です。