web-dev-qa-db-fra.com

Comment obtenir un objet en utilisant Httpclient avec une réponse Ok dans Web Api

mon API web comme

    public async Task<IHttpActionResult> RegisterUser(User user)
    {
        //User Implementation here

        return Ok(user);
    }

J'utilise HTTPClient pour demander une API Web comme mentionné ci-dessous.

var client = new HttpClient();
string json = JsonConvert.SerializeObject(model);
var result = await client.PostAsync( "api/users", new StringContent(json, Encoding.UTF8, "application/json"));

Où puis-je trouver un objet utilisateur dans ma demande de résultat qui est implémentée sur l'application client?

14
Aqdas

Vous pouvez l'utiliser (en fonction de ce dont vous avez besoin) et le désérialiser en retour vers l'objet utilisateur.

await result.Content.ReadAsByteArrayAsync();
//or
await result.Content.ReadAsStreamAsync();
//or
await result.Content.ReadAsStringAsync();

Fe, si votre API Web retourne JSON, vous pouvez utiliser

var user = JsonConvert.DeserializeObject<User>( await result.Content.ReadAsStringAsync());

EDIT: comme l'a souligné Cordan, vous pouvez également ajouter une référence à System.Net.Http.Formatting et utilise:

await result.Content.ReadAsAsync<User>()
30
Robert
string Baseurl = GetBaseUrl(microService);
string url = "/client-api/api/token";

using (HttpClient client = new HttpClient())`enter code here`
{
    client.BaseAddress = new Uri(Baseurl);
    client.DefaultRequestHeaders.Clear();
    client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");

    List<KeyValuePair<string, string>> keyValues = new List<KeyValuePair<string, string>>();

    keyValues.Add(new KeyValuePair<string, string>("client_id", "5196810"));
    keyValues.Add(new KeyValuePair<string, string>("grant_type", "password"));
    keyValues.Add(new KeyValuePair<string, string>("username", "[email protected]"));
    keyValues.Add(new KeyValuePair<string, string>("password", "Sonata@123"));
    keyValues.Add(new KeyValuePair<string, string>("platform", "FRPWeb"));


    HttpContent content = new FormUrlEncodedContent(keyValues);
    content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
    content.Headers.ContentType.CharSet = "UTF-8";

    var result = client.PostAsync(url, content).Result;
    string resultContent = result.Content.ReadAsStringAsync().Result;
}
1
Seema As