Ошибки пакетного обновления Google Slides - «Получена недопустимая полезная нагрузка JSON. Неизвестное имя» & «Невозможно связать параметр запроса» - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь записать в элемент слайда .

Я продолжаю получать сообщения об ошибках «Получена недопустимая полезная нагрузка JSON. Неизвестное имя» и «Невозможно связать параметр запроса. Поле»

Мой запрос

 {
  "requests": [
    {
      "deleteText": {
        "objectId": "g33c4ea3b90_0_9",
        "textRange": {
          "type": "FROM_START_INDEX",
          "startIndex": 0
        }
      }
    },
    {
      "insertText": {
        "objectId":  "g33c4ea3b90_0_9",
        "text": "$8.23",
        "insertionIndex": 0
      }
    }
  ]
}

Я пишу по адресу: https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate?access_token=ACCESS_TOKEN

Я вручную отбрасываю запрос в PHP:

 $params =  '
 {
  "requests": [
    {
      "deleteText": {
        "objectId": "'.$page_object_id.'",
        "textRange": {
          "type": "FROM_START_INDEX",
          "startIndex": 0
        }
      }
    },
    {
      "insertText": {
        "objectId":  "'.$page_object_id.'",
        "text": "$8.23",
        "insertionIndex": 0
      }
    }
  ]
}
';

$options = array(
    CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
    CURLOPT_ENCODING => "", // handle compressed
    CURLOPT_AUTOREFERER => true, // set referrer on redirect
    CURLOPT_CONNECTTIMEOUT => 120, // time-out on connect
    CURLOPT_TIMEOUT => 120, // time-out on response
    CURLOPT_CUSTOMREQUEST => 'POST' ,   

    CURLOPT_SSL_VERIFYPEER =>  false,
    CURLOPT_SSL_VERIFYHOST =>  false ,
    CURLINFO_HEADER_OUT =>  true ,
    CURLOPT_VERBOSE => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS =>  $params 

);

 $ch = curl_init($url);
curl_setopt_array($ch, $options);

$content = curl_exec($ch);

curl_close($ch);

  $obj = json_decode($content, true);
  print_r( $obj );

Когда я вызываю его из API Explorer , он работает отлично, но не с моего сервера.

1 Ответ

0 голосов
/ 25 января 2019

Таким образом, проблема заключалась в использовании двойных кавычек вместо одинарных кавычек в параметре запроса json string.

Итак, работает следующее:

 {
  'requests': [
    {
      'deleteText': {
        'objectId': 'g33c4ea3b90_0_9',
        'textRange': {
          'type': 'FROM_START_INDEX',
          'startIndex': 0
        }
      }
    },
    {
      'insertText': {
        'objectId': 'g33c4ea3b90_0_9',
        'text': '$44.23',
        'insertionIndex': 0
      }
    }
  ]
}

Я работал над этим два дня.

...