HttpClient pass multiple simple parameters

Use Get instead of Post for simple type parameters.

    using (var client = new HttpClient())
    {
        BaseAddress = new Uri(url);
        client.BaseAddress = new Uri(url);
   client.DefaultRequestHeaders.Clear();
   client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL"));

   client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

   string token = param.token.Value;
   client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

        // New code:
        var response = await client.GetAsync( string.format("api/products/id={0}&type={1}",param.Id.Value,param.Id.Type) );
 if (response.IsSuccessStatusCode)
   {
       var result = response.Content.ReadAsStringAsync().Result;
       return Request.CreateResponse(HttpStatusCode.OK, result);
   }

   return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "fail");

    }

In the API side you can do like this.

[HttpGet]
public HttpResponseMessage Product(string id, string type)
{
  return null;
}

When receiving a post you must specify [FromBody] in the parameters for the method to be called

[HttpPost]
public HttpResponseMessage Product([FromBody]string id, [FromBody]string type)
{
    return null;
}