197

C# と HttpClient を使用して、次の POST 要求を作成するにはどうすればよいですか。 ユーザー エージェント: フィドラー コンテンツ タイプ: application/x-www-form-urlencoded ホスト: localhost:6740 コンテンツの長さ: 6

WEB API サービスに次のようなリクエストが必要です。

[ActionName("exist")]
[HttpPost]
public bool CheckIfUserExist([FromBody] string login)
{           
    return _membershipProvider.CheckIfExist(login);
}
4

5 に答える 5

467
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);
        }
    }
}
于 2013-03-02T16:22:42.240 に答える
38

以下は同期的に呼び出す例ですが、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)
{
}
于 2013-03-02T16:19:32.403 に答える
9

asp.net の Web サイトに、あなたの質問に関する記事があります。お役に立てば幸いです。

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;
}
于 2015-11-03T09:13:12.900 に答える
2

あなたはこのようなことをすることができます

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:6740/api/Membership/exist");

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";         
req.ContentLength = 6;

StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();

次に、strReponse には、Web サービスから返された値が含まれている必要があります。

于 2013-03-02T16:19:44.450 に答える