2015-03-06 4 views
0

Я пытаюсь получить доступ к содержимому моего сервера WebDAV в узле (сервер ОК, я могу использовать его в сети). Я использую request модуль:Node.js: Не удается выполнить PROFIND с модулем запроса

path = url.join(this._options.rootUrl, path || ""); 

var data = 
    "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + 
    "<propfind xmlns=\"DAV:\">" + 
    "<propname/>" + 
    "</propfind>"; 

var headers = { 
    "Content-Type": "text/xml", 
    "Depth": depth || 1 
}; 

var req = request({ 
    url: path, 
    data: data, 
    headers: headers, 
    method: "PROPFIND", 
    json: false, 
    encoding: "utf8", 
    auth: { 
     user: this._options.user, 
     password: this._options.password 
    } 
}); 

req.on("response", ...); 

req.on("error", ...); 

Проблема заключается в том, что я получаю HTTP 405 вместо результата. Я пробовал подключенный модуль https, тот же результат.

Возможно ли, что Node.js не может ссылаться на глаголы costom как PROPFIND?

UPDATE 1:

Об этом говорится, что узел может сделать PROFIND. Поэтому мой вопрос: как вы исправляете запрос клиента WebDAV PROPFIND в node/io.js с помощью модуля запроса? (Или что-нибудь, что работает для этой цели.)

+0

Возможно ли, что сервер не поддерживает '' я знаю, по крайней мере, некоторые, которые не поддерживают это. Попробуйте удалить весь блок запроса для простого теста. (в запросе 'PROPFIND' запрос' allprop' не запрашивается. – Evert

+0

На самом деле сервер OneDrive. Существует уже работающая версия .NET этого кода, которую я хочу портировать на io.js. Таким образом, запрос подделывается таким образом, что сервер должен точно понимать. – unbornchikken

+0

Вы уверены, что OneDrive поддерживает ''? – Evert

ответ

1

PROPFIND или любой другой глагол поддерживается просто отлично для исходящих запросов в узлах и iojs. В вашем запросе есть что-то еще не так (неправильные/плохие заголовки или полезная нагрузка) или конфигурация на сервере.

Пример PROPFIND работы:

// client.js 
require('http').request({ 
    host: '127.0.0.1', 
    port: 8000, 
    method: 'PROPFIND' 
}, function(res) { 
    res.resume(); 
}).end(); 

// server.js 
require('http').createServer(function(req,res) { 
    // echoes "PROPFIND" to stdout 
    console.log(req.method); 

    res.writeHead(200, { 'Connection': 'close' }); 
    res.end(); 
}).listen(8000); 
+0

Спасибо, это подтолкнуло ту часть, которую узел/io.js может послать и получить суточные глаголы. Но мой вопрос: как вы, люди, исправляете запрос клиента WebDAV PROPFIND в node/io.js? Я еще не в состоянии это сделать. Запрос должен сделать, см. Второй комментарий моего первоначального сообщения. – unbornchikken

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

  • Нет связанных вопросов^_^