2015-03-12 7 views
0

Я пытаюсь позвонить в новый API Basecamp с помощью скрипта Google Apps. ПОЛУЧИТЕ, я могу это сделать. ПОСТ, не так много.google apps script post basecamp

Начиная с пути

https://basecamp.com/xxxxxxx/api/v1/projects/xxxxxxx/todolists.json 

Мой код:

var headers = { 
    'User-Agent' : BCuseragent, 
    'Authorization' : 'Basic ' + Utilities.base64Encode(BCuser + ':' + BCpass), 
    'Content-Type' : 'application/json', 
    'Accept' : 'application/json', 
    'validateHttpsCertificates' : false 
} 

function getBC(path) { 
    var url = BCurl + path; 
    var opt = { 
    'headers' : headers, 
    'method' : "GET" 
    }; 

    var response = UrlFetchApp.fetch(url, opt); 
    return response; 
} 


function postBC(path, payload) { 
    var url = BCurl + path; 

    var opt = { 
    'headers' : headers, 
    'method' : "POST", 
    'payload' : JSON.stringify(payload) 
    }; 
    var response = UrlFetchApp.fetch(url, opt); 
    return response; 
} 

полезной нагрузки я передаю в качестве параметра:

{name: "foo", description: "bar"} 

getBC функция работает (200 OK), функция postBC возвращает 403. Тем не менее, я являюсь владельцем проекта, и я использовал завиток и клиент Chrome REST, чтобы подтвердить, что могу на самом деле POST новых todolists в этот проект с тем же авторизацией.

Очевидно, что мои заголовки некорректны, но я не вижу, как это сделать.

+0

К сожалению о слабом названии вопроса; Я где-то сбился с пути. – argybarg

ответ

1

Это причуда UrlFetchApp. Вы не можете установить Content-Type, используя общий параметр «заголовки», вместо этого вы должны использовать параметр «contentType».

Смотрите "Дополнительные параметры" таблица здесь:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)

+0

Вот и все! Большое спасибо. – argybarg

+0

Добро пожаловать, рад помочь! –

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