概要
XamarinでSystem.Net.Http.HttpClient
を使用してHTTPのPOSTリクエストを行う。
サンプルコード
static readonly HttpClient client = new HttpClient(); private static async Task HttpRequestPostAsync() { Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("key1", "value1"); parameters.Add("key2", "日本語"); HttpResponseMessage response = await client.PostAsync("http://www.example.com", new FormUrlEncodedContent(parameters)); // A) response.EnsureSuccessStatusCode(); byte[] responseBody = await response.Content.ReadAsByteArrayAsync(); Console.WriteLine("responseBody=" + Encoding.UTF8.GetString(responseBody)); } async void OnButtonClicked(System.Object sender, System.EventArgs eventArgs) { try { await HttpRequestPostAsync(); } catch (Exception e) { Console.WriteLine($"{e}"); } }
A) application/x-www-form-urlencoded
でPOSTデータを送信するにはFormUrlEncodedContent
クラスを使用する。
実際に送信されるHTTPリクエスト
POST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept-Encoding: identity Content-Length: 44 User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; SO-02K Build/47.2.B.5.38) Host: www.example.com Connection: keep-alive key1=value1&key2=%E6%97%A5%E6%9C%AC%E8%AA%9E