код состояния 400 без объекта ошибки при загрузке в ящик

Я пытаюсь использовать request.jslibrary для загрузки файла на box.com с помощью request.post.

Я постоянно получаю в ответ код возврата 400 и пустое тело. Не знаю, как найти фактическую ошибку, которую видит окно. Аргумент err обратного вызова имеет значение null, поэтому есть ответ от box.com, но с кодом состояния 400 и пустым телом.

К вашему сведению, загрузка прошла успешно с использованием curl, поэтому токен аутентификации и т. Д. В порядке. Я указал функцию ниже на http://echo.200please.com ', и кажется, что запрос HTTP POST I отправляю в порядке. Как мне узнать, какую ошибку видит ящик?

request = require"request");
UploadFile = function(filename, callback) {
    var formData = {
        attributes: JSON.stringify( {
            name: filename, 
            parent: { id: '' + 2764913765 }
        }),
        file: fs.createReadStream('./temp.bin')
    }
    var options = {
        url: 'https://upload.box.com/api/2.0/files.content', 
        headers: { Authorization: 'Bearer ' + tokens.access_token},
        formData: formData
    }

    request.post(options,
                 function(err, response, body) {
        if (err) {
            console.log('Error Uploading the file');
        } else {
            console.log('returned:' + body + JSON.stringify(response.headers))
        }
    });

Если я изменю URL-адрес так, чтобы он указывал на echo.200please.com, ответ, который я получаю от echo.200please.com, будет ниже, что кажется правильным форматом для запроса на загрузку файла.

> POST / HTTP/1.0
Host: echo.200please.com
Connection: close
Content-Length: 1951
Authorization: Bearer bVPDzG8PgIVRNoqb5LOzD61h6NXhJ6h0
content-type: multipart/form-data; boundary=--------------------------799592280904953105406767

----------------------------799592280904953105406767
Content-Disposition: form-data; name="attributes"

{"name":"testchunkname.1","parent":{"id":"2764913765"}}
----------------------------799592280904953105406767
Content-Disposition: form-data; name="file"; filename="temp.bin"
Content-Type: application/octet-stream

<... file data ...>

person user1936097    schedule 12.12.2014    source источник
comment
Имеет ли значение, если вы буферизуете файл вместо потоковой передачи?   -  person generalhenry    schedule 12.12.2014
comment
пробовал .. без разницы. Если я отправлю эквивалентный запрос curl из командной строки, он будет успешным. Я заметил, что если я также введу неправильный токен аутентификации в команду curl, он не сработает, что заставило меня подумать, что моя команда запроса javascript не выполняет аутентификацию. Однако я просто не могу понять, почему это не сработает, учитывая, что все мои запросы на получение успешно выполняются с одним и тем же токеном аутентификации и тем же кодом запроса javascript.   -  person user1936097    schedule 13.12.2014


Ответы (1)


Хорошо ... Я обнаружил ошибку :-) Это опечатка в URL-адресе моей программы, для которой установлено значение api/2.0/files.content, тогда как правильный путь в URL-адресе должен быть api/2.0/files/content

person user1936097    schedule 13.12.2014