Estoy intentando acceder a un punto final de descanso, https://api.planet.com/auth/v1/experimental/public/users/authenticate . Está esperando json en el cuerpo de la solicitud.
Puedo hacer que la solicitud funcione en Postman pero sin usar c #. Al usar cartero, obtengo el mensaje de correo electrónico o contraseña no válido esperado, pero con mi código obtengo "Solicitud incorrecta" sin importar que lo intente.
Aquí está el código que hace la solicitud
private void Login()
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://api.planet.com/");
client.DefaultRequestHeaders.Accept.Clear();
//ClientDefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
Data.User user = new Data.User
{
email = "[email protected]",
password = "sdosadf"
};
var requestMessage = JsonConvert.SerializeObject(user);
var content = new StringContent(requestMessage, Encoding.UTF8, "application/json");
var response = client.PostAsync("auth/v1/experimental/public/users/authenticate", content).Result;
Console.WriteLine(response.ToString());
}
catch (WebException wex )
{
MessageBox.Show(wex.Message) ;
}
}
class User
{
public string email;
public string password;
}
Aquí hay capturas de pantalla de Postman que están funcionando
La forma de hacer que esto funcionara era alterar el encabezado de contenido "tipo de contenido". Por defecto HTTPClient
estaba creando content-type: application/json;characterset= UTF8
. Dejé caer y recreé el encabezado del contenido sin la sección de conjunto de caracteres y funcionó.
content.Headers.Remove("Content-Type");
content.Headers.Add("Content-Type", "application/json");
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras