Saltar al contenido

C#: HttpClient con parámetros POST

Hola usuario de nuestro sitio web, hemos encontrado la respuesta a tu pregunta, continúa leyendo y la verás un poco más abajo.

Solución:

Una alternativa más limpia sería utilizar un Dictionary para manejar parámetros. Están key-pares de valores después de todo.

private static readonly HttpClient httpclient;

static MyClassName()

    // HttpClient is intended to be instantiated once and re-used throughout the life of an application. 
    // Instantiating an HttpClient class for every request will exhaust the number of sockets available under heavy loads. 
    // This will result in SocketException errors.
    // https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.7.1
    httpclient = new HttpClient();    
 

var url = "http://myserver/method";
var parameters = new Dictionary   "param1", "1" ,  "param2", "2"  ;
var encodedContent = new FormUrlEncodedContent (parameters);

var response = await httpclient.PostAsync (url, encodedContent).ConfigureAwait (false);
if (response.StatusCode == HttpStatusCode.OK) 
    // Do something with response. Example get content:
    // var responseContent = await response.Content.ReadAsStringAsync ().ConfigureAwait (false);

También no olvides Dispose() httpclient, si no usa la palabra clave using

Como se indica en la sección Comentarios de la clase HttpClient en los documentos de Microsoft, se debe crear una instancia de HttpClient una vez y reutilizarlo.

Editar:

Es posible que desee investigar response.EnsureSuccessStatusCode(); en vez de if (response.StatusCode == HttpStatusCode.OK).

Es posible que desee mantener su httpclient y no Dispose() eso. Consulte: ¿Se deben eliminar HttpClient y HttpClientHandler?

Editar:

No se preocupe por usar .ConfigureAwait(false) en .NET Core. Para obtener más detalles, consulte https://blog.stephencleary.com/2017/03/aspnetcore-synchronization-context.html

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *