BigCommerce API を使用して、category という配列を投稿しようとしています。配列 [1] が無効な Json 配列であるという応答を受け取りました。
テストするには、https://developer.bigcommerce.com/console Products > create a new product に移動します。
これが私のコードです:
public bool CreateNewProduct(string name, string sku, decimal price, decimal weight, List<string> categories = null, string type = "physical", string availability = "available")
{
HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential(username, api_key);
handler.UseDefaultCredentials = true;
HttpClient client = new HttpClient(handler)
{
BaseAddress = new Uri(baseUrl),
};
Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("name", name);
values.Add("price", price.ToString());
values.Add("weight", weight.ToString());
values.Add("sku", sku);
string cats = string.Empty;
if (categories == null)
{
categories = new List<string>();
categories.Add(GetAllCategories().FirstOrDefault().ID.ToString());
}
else
{
foreach (string theInt in categories)
{
cats += theInt + ",";
}
cats.Remove(cats.Length - 1);
}
values.Add("categories", "[1]");
values.Add("type", type);
values.Add("availability", availability);
string userP = username + ":" + api_key;
byte[] authBytes = Encoding.UTF8.GetBytes(userP).ToArray();
client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(authBytes));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string url = "products.json";
HttpResponseMessage response = client.PostAsJsonAsync(url, values).Result;
if (response.IsSuccessStatusCode)
{
Product result = response.Content.ReadAsAsync<Product>().Result;
if (result != null)
{
return true;
}
}
return false;
}
ここに私の要求があります:
POST xyz/api/v2/products.json HTTP/1.1
Authorization: Basic adf
Accept: application/json
Content-Type: application/json; charset=utf-8
Host: x
Content-Length: 132
Expect: 100-continue
{"name":"test product 1","price":"100","weight":"1","sku":"test111","categories":"[1]","type":"physical","availability":"available"}
応答は次のとおりです。
[{"status":400,"message":"The field 'categories' is invalid.","details":{"invalid_reason":"The provided value is not a valid array."}}]