Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Content-Language header throws Misused header name error when calling Ebay API

When I make a PUT request to CreateOrReplaceInventoryItem using the Ebay API, I get this error:

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

The below code throws the error.

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;
}

If I remove the line:

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

Then I get a returned error object:

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

What am I doing wrong? Is there another way to set Content-Language that I'm unaware of?

like image 997
markpsmith Avatar asked Oct 21 '25 02:10

markpsmith


1 Answers

As the Content-Language is a content header you should assign it in the HttpContent instance instead of DefaultRequestHeaders. Based on your code would be something like this:

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;
}
like image 109
Juan Diego Foronda Avatar answered Oct 22 '25 16:10

Juan Diego Foronda



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!