c# - 调用 Ebay API 时,Content-Language header 会抛出 Misused header name 错误

标签 c# rest http-headers dotnet-httpclient ebay-api

当我使用 Ebay API 向 CreateOrReplaceInventoryItem 发出 PUT 请求时,出现以下错误:

Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.

下面的代码会引发错误。

using (var client = new HttpClient())
{
    var baseUri = new Uri(string.Format("https://api.sandbox.ebay.com/sell/inventory/v1/inventory_item/{0}", SKU));
    client.DefaultRequestHeaders.Add("Authorization", string.Format("Bearer {0}", token));
    client.DefaultRequestHeaders.Add("Content-Language", "en-US");

    var payload = JsonConvert.SerializeObject(product);
    var content = new StringContent(payload, Encoding.UTF8, "application/json");

    var response = client.PutAsync(baseUri, content).Result;
    return response.Content.ReadAsStringAsync().Result;
}

如果我删除该行:

client.DefaultRequestHeaders.Add("Content-Language", "en-US");

然后我得到一个返回的错误对象:

errors":[{"errorId":25709,"domain":"API_INVENTORY","subdomain":"Selling","category":"REQUEST","message":"Invalid value for header Content-Language."}]} 

我做错了什么?还有另一种我不知道的设置 Content-Language 的方法吗?

最佳答案

由于 Content-Language 是一个内容 header ,因此您应该在 HttpContent 实例中分配它,而不是 DefaultRequestHeaders。根据您的代码将是这样的:

using (var client = new HttpClient())
{
    var baseUri = new Uri(string.Format("https://api.sandbox.ebay.com/sell/inventory/v1/inventory_item/{0}", SKU));
    client.DefaultRequestHeaders.Add("Authorization", string.Format("Bearer {0}", token));

    var payload = JsonConvert.SerializeObject(product);
    var content = new StringContent(payload, Encoding.UTF8, "application/json");
    content.Headers.Add("Content-Language", "en-US");

    var response = client.PutAsync(baseUri, content).Result;
    return response.Content.ReadAsStringAsync().Result;
}

关于c# - 调用 Ebay API 时,Content-Language header 会抛出 Misused header name 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065928/

相关文章:

java - 描述这种随机但公平地调用学生的程序/算法的正确术语是什么?

performance - cookie+静态文件什么时候成为相关问题?

security - Symfony2-特定于URL的安全HTTP方法

javascript - 静态资源的 HTTP header

java - spring JPA 在 API 请求中发布

C# - 从两个枚举中获取可能的对

c# - 当向数据库表中添加更多列时,如何让 datagridview 显示更改?

c# - 如何找到一个类型的所有 Assets ?

python - Django REST 框架 : read-write Custom Relational Fields

android - 使用 Dropbox REST 通过 Android 同步您的列表