2015-01-04 5 views
0

я вызвать RESTful webserice с помощью метода GET URL с paramters из скриптов Google Apps успешно используя следующие:RESTful из Google Apps Script

UrlFetchApp.fetch(url); 

Но когда я переключаю метод использовать POST, результат, возвращаемый говорит что ни один параметр не был отправлен:

UrlFetchApp.fetch(url, options); 

Я также пытался использовать (Advanced) Rest клиента Google Chrome, и параметры полезной нагрузки не передаются там.

Что мне не хватает?

Ниже представлен клиентский интерфейс клиента Chrome (расширенный).

enter image description here

+0

Что такое код для 'options' параметра? –

+0

var data = {"x1": "1", "x2": "2"}; data = JSON.stringify (данные); var options = {метод: "post", полезная нагрузка: данные}; –

+0

В дополнение к этому, я тестировал этот веб-сервис с использованием простого приложения Java и клиента Java с Apache HttpClient, используя метод POST, они также не работали. –

ответ

1

Вы упоминаете в комментариях, что вы конвертируете полезную нагрузку, передаваемую на JSON.

Во-первых, вы уверены, что удаленная служба ожидает полезную нагрузку JSON, а не формирует закодированные данные?

Если служба ожидает формы закодированных данных, не JSON.stringify вашей полезной нагрузки:

var data = {"x1": "1", "x2": "2"}; 
var options = {method : "post", payload : data}; 

Если услуга действительно ожидает полезную нагрузки JSON, вам необходимо установить тип содержимого:

var data = {"x1": "1", "x2": "2"}; 
data = JSON.stringify(data); 
var options = {method : "post", payload : data, contentType:"application/json"}; 

В противном случае используется тип содержимого по умолчанию 'application/x-www-form-urlencoded'.

Смотрите описание на «CONTENTTYPE» в разделе «Дополнительные параметры»: https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

+0

Ну, после исследования, я думаю, что API принимает только параметры строки запроса. Спасибо за ваш ответ! –

Смежные вопросы