¿Por qué no recibo ninguna respuesta de la solicitud REST?
Estoy intentando hacer una solicitud a una API REST.
Mi problema es que no pasa nada, parece que no se ejecuta en absoluto.
No obtengo errores ni respuestas en absoluto.
Por favor, eche un vistazo a mi código:
using System;
using System.Threading.Tasks;
using System.Net.Http.Json;
using System.Net.Http;
namespace RescoTrello
{
class Program
{
static void Main(string[] args)
{
var url = "http://ejemplo.com";
var userName = "xxxx";
var passWord = "yyyy";
var credentials = "Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(userName + ":" + passWord));
var client = new HttpClient(); // idealmente esto sería creado desde IHttpClientFactory
var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.Add("Authorization", credentials);
var jsonString = "{'Journal': 'Standard', 'Item':'23396', 'Qty':4 }";
request.Content = JsonContent.Create(jsonString);
var response = Task.Run(async () =>
{
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
});
Console.WriteLine(response.Status);
}
}
}
davy.ai
Hay algunos problemas potenciales con este código que podrían estar causando el problema:
response
, estás esperandoclient.SendAsync(request)
yresponse.Content.ReadAsStringAsync()
, pero no estás esperando toda la tarea completa. Debes agregarawait response;
al final de la tarea para asegurarte de que esté totalmente esperada antes de continuar.Problema de autorización: Asegúrate de que los valores
userName
ypassWord
sean correctos y coincidan con el formato esperado para la cabecera de autorización.Problema de contenido: Asegúrate de que el contenido
jsonString
sea un JSON válido y coincida con el formato esperado para el punto final de la API.Problema de punto final: Confirma que la variable
url
sea correcta y coincida con el punto final esperado para la API.Además, puede ser útil agregar un manejo de errores al código para capturar cualquier excepción que pueda estar ocurriendo durante la solicitud. Puedes envolver todo el bloque
Task.Run
en una declaración try/catch y registrar cualquier excepción que ocurra.