Попробовал много вариантов обновления продукта в ECWID с помощью метода puts(), установленного в Google Apps Script UrlFetchApp.fetch(), но не удалось. Ниже приведены различные способы написания кода и тестирования, но я получаю разные типы ошибок.Метод ввода UrlFetch с использованием скрипта Google Apps
Я думаю, я пропустил небольшую вещь, которая не в состоянии понять это. Пожалуйста, помогите мне исправить эту проблему.
API: Ecwid Продукты API (http://kb.ecwid.com/w/page/25285101/Product%20API#RESTAPIMethodupdateaproduct) Метод: PUT (обновить сведения о продукте)
Пример кода 1: -
function updateProducts(){
var products_authkey = "xxxxxxxx";
try{
var url ="https://app.ecwid.com/api/v1/xxxxx/product?id=xxxxxxxx&secure_auth_key="+products_authkey;
var payload = {price:62755};
var options ={method:"put",ContentType:"application/json",payload:payload};
var result = UrlFetchApp.fetch(url, options);
var response = result.getContentText();
}catch(e){
Browser.msgBox(e);
}
}
Ошибка: - "{" Ошибка »:« OTHER »,« errorMessage »:« Анализ ошибок JSON: текст JSONObject должен начинаться с «{« при знаке 0 »}»
Версия 2: - Пробовал преобразование объекта в json stringify, но с той же ошибкой.
function updateProducts_version2(){
try{
var url ="https://app.ecwid.com/api/v1/xxxx/product?id=xxxxx&secure_auth_key="+products_authkey;
var payload = {price:62755};
var payload_json = Utilities.jsonStringify(payload);
var options ={method:"put",ContentType:"application/json",payload:payload_json,muteHttpExceptions:true};
var result = UrlFetchApp.fetch(url, options);
var response = result.getContentText();
var res_code = result.getResponseCode();
var x = 1;
}catch(e){
Browser.msgBox(e);
}
}
Ошибка: - "{ "ошибка": "ДРУГИЕ", "ErrorMessage": "Ошибка разбора JSON: Текст JSONObject должен начинаться с '{' на символ 0"}"
версии 3: - (Пробовал прохождение secure_auth_key с помощью авторизацией в заголовках)
function updateProducts_version3(){
try{
var url ="https://app.ecwid.com/api/v1/xxxxx/product?id=xxxxx";
var payload = {price:62755};
var headers = {Authorization: 'xxxxxxx'};
var options = {headers:headers,method:"put",ContentType:"application/json",payload:payload};
var options ={method:"put",ContentType:"application/json",payload:payload,muteHttpExceptions:true};
var result = UrlFetchApp.fetch(url, options);
var response = result.getContentText();
var res_code = result.getResponseCode();
var x = 1;
}catch(e){
Browser.msgBox(e);
}
}
ошибка: - { "ошибка": "ДРУГИЕ", "ErrorMessage": "ключ API не найден в параметрах запроса"}
Также обратите внимание, что я пробовал использовать плагин Chrome для Chrome, он обновляется правильно. Это означает, что проблема связана с использованием UrlFetch. Пожалуйста, помогите мне устранить эту проблему ...
Спасибо заранее ...
было бы просто, что вам нужно поставить свою полезную нагрузку в кавычки? – patt0
Вы пытались использовать параметр «Отладка» (возможно, вам придется удалить свою попытку)? Тогда вы сможете точно увидеть, как выглядит полезная информация. Мне любопытно, какая строка бросает ошибку. У меня нет доверия к службе, но я получаю ожидаемую ошибку 400 в строке 'UrlFetchApp.fetch'. – fooby
@patto: попробовал иметь объект в кавычках, как показано ниже, а затем получить ту же ошибку, что и раньше: var payload = "{price: 62758}"; – pavan