Обновление Shopify Variant возвращает 400 Bad Request

Я пытаюсь обновить инвентарь существующего варианта в shopify, используя следующий код json и С#:

    var p = new
    {
            id = "220994352",
            inventory_quantity = "0"
    };

    string url = "https://somestore.myshopify.com/admin/variants/220994352.json";

    ShopifyAuthorizationState authState = (ShopifyAuthorizationState)HttpContext.Current.Session["shopify_auth_state"];
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "PUT";
    request.ContentType = "application/json";
    request.Headers.Add("X-Shopify-Access-Token", authState.AccessToken);

    var serializer = new JavaScriptSerializer();
    var json = serializer.Serialize(p);
    json = "{ variant: " + json + "}";

    if (!String.IsNullOrEmpty(json))
    {
        using (var ms = new MemoryStream())
        {
            using (var writer = new StreamWriter(request.GetRequestStream()))
            {
                writer.Write(json);
                writer.Close();
            }
        }
    }


    string result = "";
    try
    {
        var response = (HttpWebResponse)request.GetResponse();
        using (Stream stream = response.GetResponseStream())
        {
            StreamReader sr = new StreamReader(stream);
            result = sr.ReadToEnd();
            sr.Close();
        }
    }
    catch (WebException ex)
    {
        WebHeaderCollection webHeaderCollection = ex.Response.Headers;
        foreach (var header in ex.Response.Headers.AllKeys)
        {
            Console.WriteLine(webHeaderCollection[header]);
        }
    }

Однако каждый раз, когда я запускаю это, я получаю запрос 400 Bad без подробностей об ошибке. Я получаю читать инвентарь без каких-либо проблем.


person vikasde    schedule 25.07.2012    source источник


Ответы (2)


Вы уверены, что установили ограниченные разрешения при авторизации приложения, чтобы иметь доступ на запись к продуктам?

Можете ли вы опубликовать ссылку на необработанный http-ответ, чтобы показать, что именно возвращается, включая заголовки, чтобы увидеть, есть ли там какие-либо подробности?

person Edward Ocampo-Gooding    schedule 25.07.2012
comment
Область уже была установлена, однако я дважды проверил заголовки, и мой json на самом деле недействителен. Мне не хватало двойных кавычек вокруг варианта :( - person vikasde; 25.07.2012

400 неверный запрос обычно означает, что отправляемые данные недействительны. И просмотр вашего json, вероятно, поможет вам. Попробуйте поставить кавычки вокруг варианта в вашей строке json.

person colin    schedule 25.07.2012
comment
Спасибо, Колин. В этом была проблема. То же самое происходит, кстати, в Shopify созданной вами оболочке .net. - person vikasde; 25.07.2012
comment
На самом деле, я только добавил поддержку oAuth в эту оболочку .net. У меня скоро выйдет новая оболочка .net, которая будет работать для всех версий .NET, будет проще в использовании (надеюсь). - person colin; 25.07.2012
comment
Большой. Я с нетерпением жду этого. Спасибо - person vikasde; 25.07.2012