中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【c#.net】HttpClientクラスを使ってJsonデータをPOSTする

1.概要

.netアプリケーションからJsonデータをPOSTしてみます。
今回は.net Framework4.5から追加された【HttpClient】クラスを使います。

webサーバーはPOSTされたJsonデータを
そのまま返してくるという動作になっています。

2.Jsonデータ

Jsonデータを扱うために【Newtonsoft.Json】を
NuGetからインストールしています。
【Newtonsoft.Json】については過去記事を参照して下さい。

www.chuken-engineer.com

3.コード

http://192.168.0.129:3000】に対してJsonデータをPOSTしています。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace postTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private async void Form1_Load(object sender, EventArgs e)
        {
            // シリアライズ処理
            var info = new test
            {
                Job = "プログラマー",
                Age = 37,
            };
            string json = JsonConvert.SerializeObject(info, Formatting.Indented);


            var client = new HttpClient();
            // タイムアウト時間の設定(5秒)
            client.Timeout = TimeSpan.FromMilliseconds(5000);
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            try
            {
                var response = await client.PostAsync("http://192.168.0.129:3000", content);
                var resString = await response.Content.ReadAsStringAsync();

                MessageBox.Show(resString);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

    // シリアライズの対象となるクラスを宣言
    public class test
    {
        public string Job { get; set; }
        public int Age { get; set; }
    }
}

4.結果

結果は下図のとおりです。
POSTしたデータがそのまま戻ってきています。
f:id:tsu--kun:20190808151659p:plain