API Документов Google: невозможно установить заголовок документа - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь загрузить файл, используя Node и Google Docs REST API.Я могу загрузить файл просто отлично, если я не включу метаданные, но он всегда будет загружен как «Без названия».

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

ParseException - содержимое не разрешено в прологе

Это мой первый запрос на создание сеанса загрузки и получение возобновляемой медиа-ссылки

var meta = '<?xml version="1.0" encoding="UTF-8"?>'
    meta+= '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:docs="http://schemas.google.com/docs/2007">'
    meta+= '<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/docs/2007#document"/>'
    meta+= '<title>Test</title></entry>'

var options = {
    host: 'docs.google.com',
    path: '/feeds/upload/create-session/default/private/full',
    method: 'POST',
    headers: { 
      'Host' : 'docs.google.com',
      'Content-Length' : meta.length,
      'Content-Type': 'application/atom+xml',
      'GData-Version' : 3,
      'Authorization' : 'GoogleLogin auth=' + authToken,
      'X-Upload-Content-Type' : 'application/msword',
      'X-Upload-Content-Length' : 31232
    }
}

var req = https.request(options, function (res) {
    // make 2nd request

});

req.end(meta);

Вот так выглядит мой второй запрос после получения ссылки на возобновляемый носитель

var options = { 
    host: 'docs.google.com',
    path: resumableMediaLink,
    method: 'PUT',
    headers: {
        'Content-Length': data.length,
        'Content-Type': 'application/msword',
        'Content-Range': 'bytes 0-' + (data.length-1) +'/'+ data.length
    }   
}   

var req = https.request(options, function (res) {
    res.on('data', function (chunk) {
         // ...
    }); 
}); 

req.write(data);
req.end();

Похоже, я неправильно отправляю данные атома.Есть идеи, что я могу делать не так?

1 Ответ

0 голосов
/ 22 марта 2012

Я понял, что я делаю не так.

Мне нужно было установить заголовок 'Slug' в первом запросе POST, чтобы начать возобновляемый сеанс.

У меня было это в следующем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...