with example c# post parameters httpclient

example - C#: HttpClient con parámetros POST



send parameters post c# (2)

Como dijo Ben, estás POSTANDO tu solicitud (HttpMethod.Post especificado en tu código)

Los parámetros de cadena de consulta (obtener) incluidos en su url probablemente no harán nada.

Prueba esto:

string url = "http://myserver/method"; string content = "param1=1&param2=2"; HttpClientHandler handler = new HttpClientHandler(); HttpClient httpClient = new HttpClient(handler); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); HttpResponseMessage response = await httpClient.SendAsync(request,content);

HTH,

bovako

Yo uso los códigos a continuación para enviar la solicitud POST a un servidor:

string url = "http://myserver/method?param1=1&param2=2" HttpClientHandler handler = new HttpClientHandler(); HttpClient httpClient = new HttpClient(handler); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); HttpResponseMessage response = await httpClient.SendAsync(request);

No tengo acceso al servidor para depurar, pero quiero saber si esta solicitud se envió como POST o GET.

Si es GET, ¿cómo puedo cambiar mi código para enviar param1 y param2 como datos POST (no en la URL)?


Una alternativa más limpia sería usar un Dictionary para manejar los parámetros. Son pares clave-valor 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<string, string> { { "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); }

Tampoco olvide 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 , HttpClient debe crearse una instancia y reutilizarse.

Editar:

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

Es posible que desee mantener su HttpClient y no Dispose() . Consulte: ¿Hay que eliminar HttpClient y HttpClientHandler?