3

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."}}]
4

1 に答える 1