.NET HttpClient. Hoe tekenreekswaarde POST?

Hoe kan ik met C# en HttpClient het volgende POST-verzoek maken:

Ik heb zo’n verzoek nodig voor mijn WEB API-service:

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

Antwoord 1, autoriteit 100%

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);
        }
    }
}

Antwoord 2, autoriteit 8%

Hieronder ziet u een voorbeeld van synchroon bellen, maar u kunt eenvoudig overschakelen naar async door wait-sync te gebruiken:

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)
{
}

Antwoord 3, autoriteit 3%

Hiervond ik dit artikel dat een postverzoek is met behulp van JsonConvert.SerializeObject()& StringContent()naar HttpClient.PostAsync-gegevens

static async Task Main(string[] args)
{
    var person = new Person();
    person.Name = "John Doe";
    person.Occupation = "gardener";
    var json = Newtonsoft.Json.JsonConvert.SerializeObject(person);
    var data = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");
    var url = "https://httpbin.org/post";
    using var client = new HttpClient();
    var response = await client.PostAsync(url, data);
    string result = response.Content.ReadAsStringAsync().Result;
    Console.WriteLine(result);
}

Antwoord 4, autoriteit 2%

Er staat een artikel over uw vraag op de website van asp.net. Ik hoop dat het je kan helpen.

Een api aanroepen met asp net

http: //www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client

Hier is een klein deel uit de POST-sectie van het artikel

De volgende code verzendt een POST-verzoek dat een productinstantie in JSON-indeling bevat:

// 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;
}

Antwoord 5

Je zou zoiets als dit kunnen doen

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();

En dan moet strReponse de waarden bevatten die door uw webservice worden geretourneerd

Other episodes