Проблема при создании продукта с использованием Shopify API - PullRequest
3 голосов
/ 16 октября 2019

У меня возникла странная проблема при экспорте некоторых продуктов в Shopify. Когда я сохраняю JSON, сгенерированный с помощью JSON.net, в текстовый файл, а затем читаю его, а затем отправляю в API создания продукта Shopify, он работает нормально. Однако, если я просто сохраню JSON в строку и отправлю запрос на публикацию напрямую, я получу сообщение об ошибке шлюза 502 от Shopify. Это происходит только при создании определенных продуктов, где полезная нагрузка JSON несколько больше обычной. На других продуктах просто сохраните JSON в строку и затем отправьте в Shopify. Как ни странно, когда я сохраняю JSON в файл из C #, затем читаю этот файл несколькими строками ниже в том же коде, использую это содержимое как строку JSON и отправляю запрос на публикацию, он снова не работает. Как вы думаете, может быть проблема?

Вот JSON, сгенерированный с использованием JSON.net, который работает нормально при чтении из файла (https://pastebin.com/9SKFPjGJ)

var jsonContent = JsonConvert.SerializeObject(myObject);
using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, $"https://{shopifySlug}.myshopify.com/admin/products/{originalShopifyProductId}.json"))
{
    requestMessage.AddShopifyHeaders(shopifyAccessToken); // just a method for adding necessary shopify headers
    requestMessage.Content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    response = await client.SendAsync(requestMessage);
}

Мне становится трудно знать,причина.

Вот что работает:

Код, который работает:
json.txt сгенерирован с использованием этого отдельно:

System.IO.File.WriteAllText("E:\\json.txt",JsonConvert.SerializeObject(myObject));

(Обратите внимание, что если вышестрока кода вставляется перед кодом ниже в том же файле, тогда код ниже не работает, т. е. файл должен быть сохранен отдельно, чтобы он работал).

И затем, просто читая JSONиз файла и отправки, что в запросе POST работает. Код ниже:

var jsonContent = System.IO.File.ReadAllText("E:\\json.txt");
using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, $"https://{shopifySlug}.myshopify.com/admin/products/{originalShopifyProductId}.json"))
{
    requestMessage.AddShopifyHeaders(shopifyAccessToken); // just a method for adding necessary shopify headers
    requestMessage.Content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    response = await client.SendAsync(requestMessage);
}

Также неработающий код в самом верху работает нормально для меньших полезных нагрузок JSON, как этот https://pastebin.com/RhYjVuvv

...