C#とHttpClientを使用して次のPOSTリクエストを作成する方法を教えてください。
私のWEB APIサービスにはこのようなリクエストが必要です。
[ActionName("exist")]
[System.Web.Mvc.HttpPost]
public bool CheckIfUserExist([FromBody] string login)
{
bool result = _membershipProvider.CheckIfExist(login);
return result;
}
using System;
using System.Collections.Generic;
using System.Net.Http;
class Program
{
static void Main(string[] args)
{
Task.Run(() => MainAsync());
Console.ReadLine();
}
static async Task MainAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:6740");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("", "login")
});
var result = await client.PostAsync("/api/Membership/exists", content);
string resultContent = await result.Content.ReadAsStringAsync();
Console.WriteLine(resultContent);
}
}
}
以下は同期呼び出しの例ですが、await-syncを使用することで簡単に非同期に変更できます。
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("login", "abc")
};
var content = new FormUrlEncodedContent(pairs);
var client = new HttpClient {BaseAddress = new Uri("http://localhost:6740")};
// call sync
var response = client.PostAsync("/api/membership/exist", content).Result;
if (response.IsSuccessStatusCode)
{
}
あなたの質問に関する記事がasp.netのウェブサイトにあります。お役に立てば幸いです。
Asp netでAPIを呼び出す方法
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
これは記事のPOSTセクションの一部です。
次のコードは、JSON形式のProductインスタンスを含むPOSTリクエストを送信します。
// HTTP POST
var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };
response = await client.PostAsJsonAsync("api/products", gizmo);
if (response.IsSuccessStatusCode)
{
// Get the URI of the created resource.
Uri gizmoUrl = response.Headers.Location;
}