2015-05-12 3 views
1

Я могу добраться до сервера, но не могу отправить свои данные формы. Как отправить данные формы с помощью запроса https? Я использую библиотеку данных формы для данных формы и запрос https для пост-вызова. Когда я запускаю следующий код, я могу связаться с сервисом, но служба дает ответ, в котором говорится, что данные формы не отправляются.Как отправить данные формы в node.js

var https = require('https'); 
var FormData = require('form-data'); 
//var querystring = require('querystring'); 
var fs = require('fs'); 
var form = new FormData(); 

connect(); 

function connect() { 
    username = "wr"; 
    password = "45!" 

    var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); 
    var options = { 
     hostname: 'trans/sun.com', 
     port: 443, 
     path: '/transfer/upload-v1/file', 
     method: 'POST', 
     rejectUnauthorized: false, 
     headers: { 
      'Authorization': auth, 
      'Content-Type': 'application/json', 
      //'Content-Length': postData.length 
     } 
    }; 

    form.append('deviceId', '2612'); 
    form.append('compressionType', 'Z'); 
    form.append('file', fs.createReadStream('/Mybugs.txt')); 

    var req = https.request(options, function(res) { 
     console.log("statusCode: ", res.statusCode); 
     //console.log("headers: ", res.headers); 
     res.setEncoding('utf8'); 
     res.on('data', function(d) { 
      console.log(d) 
     }); 
    }); 

    req.write(form + ''); 
    req.end(); 

    req.on('error', function(e) { 
     console.error(e); 
    }); 
} 

ответ

3

Вы никогда не связываете свою форму с вашей просьбой. Проверьте этот пример с помощью form-data documentation

var http = require('http'); 

var request = http.request({ 
    method: 'post', 
    host: 'example.org', 
    path: '/upload', 
    headers: form.getHeaders() 
}); 

form.pipe(request); 

request.on('response', function(res) { 
    console.log(res.statusCode); 
});