错误:套接字挂断

时间:2014-08-27 04:33:41

标签: node.js

var fs = require('fs');
var http = require('http');
var qs = require('querystring');
var util = require("util");

正在运行以下代码

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: socket hang up
    at createHangUpError (http.js:1472:15)
    at Socket.socketOnEnd [as onend] (http.js:1568:2
    at Socket.g (events.js:175:14)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

var sendresult = function (result) {
    console.log(result)
    var post_data ={"result": result};
    console.log(JSON.stringify(post_data))
  var options = {
    host: '172.16.2.107',
    path: '/senddata',
    port: '9080',
    method: 'POST',
      headers : {
        'Content-Type': 'application/json',     
        'Content-Length': post_data.length
    }     

  };
 console.log("INSIDE-------------------------------------------------------")
    var post_req = http.request(options, function(res) {
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
          console.log('Response: ' + chunk);
      });

        req.on('error', function (err) {
    //handle error here
});
  });

  // post the data
  post_req.write(post_data.toString());
  post_req.end();

}
sendresult("dataaaaaaaaa")

我的代码有什么问题

1 个答案:

答案 0 :(得分:0)

首先,post_data.length不存在,因为post_data不是字符串。

所以改变这个:

var post_data ={"result": result};

到此:

var post_data = JSON.stringify({"result": result});

如果Buffer.byteLength(post_data)应包含utf8字符或类似内容,则post_data.length应该Content-Length而不是post_dataBuffer.byteLength()始终计算字节数,而string.length返回字符数,这可能并不总是与字节数相同。