Dow*_*ers 2 c# rest dotnet-httpclient
我正在尝试访问休息端点https://api.planet.com/auth/v1/experimental/public/users/authenticate。它期望请求正文中有 json。
我可以得到在 Postman 中工作的请求,但不能使用 C#。使用邮递员,我收到预期的无效电子邮件或密码消息,但使用我的代码,无论我尝试如何,我都会收到“错误请求”。
这是发出请求的代码
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 = "myemail@company.com",
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;
}
Run Code Online (Sandbox Code Playgroud)
使其发挥作用的方法是更改内容标题“内容类型”。默认情况下HTTPClient 正在创建content-type: application/json;characterset= UTF8. 我删除并重新创建了没有字符集部分的内容标题,它起作用了。
content.Headers.Remove("Content-Type");
content.Headers.Add("Content-Type", "application/json");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6819 次 |
| 最近记录: |