socket挂断节点0.8.17

时间:2013-08-18 23:58:56

标签: node.js

我在发布帖子请求时遇到“socket hang up”错误。我无法解决它。

  sparqlQ = getSPARQLPrefix() + query_string;
  console.log(sparqlQ)
  var options = {
    host: process.env['SESAME_HOST'],
    port: process.env['SESAME_PORT'],
    method: 'POST',
    path:
      '/openrdf-sesame/repositories/myReo?update=' +
      encodeURIComponent(sparqlQ) +
      '&content-type=application/sparql-results+json',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/sparql-results+json',
    },
  };

  var req = http.request(options, function(res) {
    var data = "";
    res.on('data', function (chunk) {
      data += chunk;
    });
    res.on('error', function (error) {
      console.log(error)
    });
    res.on('end', function () {
       console.log(data)
       req.end();
       callback(null);
    });
  }).on('error', function(e) {
    console.alert("Error getting sesame response [%s]", e.message);
    req.end();
    callback(e.message);
    return
  });

我做错了什么?请帮忙!

1 个答案:

答案 0 :(得分:1)

这里要提两件事。


您没有在req.end()上致电http request

在node.js的http模块上引用this documentation

  

使用 http.request()时,必须始终调用 req.end()来表示   您完成了请求 - 即使没有写入数据也是如此   到请求机构。


关于您呼叫的req.error活动console.alert,我认为应该是console.log


以下是示例代码

http = require("http"); 
var options = {
    host: "localhost",
    port: 80,
    method: 'POST'      
};

var req = http.request(options, function(res) {

    var data = "";
    res.on('data', function (chunk) {
        data += chunk;
    });
    res.on('error', function (error) { });
    res.on('end', function () {
        console.log(data)
        req.end();
        console.log(null);
    });

}).on('error', function(e) {

        console.log("Error getting sesame response [%s]", e.message);
        req.end();
        console.log(e.message);
        return

});

req.end();