请求期间“套接字挂起”错误

我尝试通过node.js版本0.8.14的http模块向某个站点(而不是我自己的站点)发出GET请求。 这是我的代码(CoffeeScript):

options = 
        host: 'www.ya.ru'
        method: 'GET'
    req = http.request options, (res) ->
        output = ''
        console.log 'STATUS: ' + res.statusCode
        res.on 'data', (chunk) ->
            console.log 'A new chunk: ', chunk
            output += chunk

        res.on 'end', () ->
            console.log output
            console.log 'End GET Request'

    req.on 'error', (err) ->
        console.log 'Error: ', err
    req.end()

在此操作过程中出现以下错误:{[错误:套接字挂断]代码:'ECONNRESET'}。 如果我评论错误处理程序,我的应用程序就完成了以下错误:

events.js:48
    throw arguments[1]; // Unhandled 'error' event
    ^
Error: socket hang up
    at createHangUpError (http.js:1091:15)
    at Socket.onend (http.js:1154:27)
    at TCP.onread (net.js:363:26)

我试图在互联网上找到解决方案,但仍未找到它们。 如何解决这个问题?


你必须结束这个请求。 在脚本的最后加上这个:

req.end()

当使用http.request() ,你必须在某个时候调用request.end()

req = http.request options, (res) ->
    # ...

req.on 'error', # ...

req.end() # <---

在此之前, request被打开以允许编写一个正文。 而且,错误是因为服务器最终会认为连接超时并将其关闭。

或者,您也可以使用http.get()GET请求,这些请求会自动调用.end()因为GET请求通常不会包含主体。


在我的情况下,它是'Content-Length'标题 - 我拿出来了,现在没事了......

码:

function sendRequest(data)
{
    var options = {
              hostname: host,
              path: reqPath,
              port: port,
              method: method,
              headers: {
                      'Content-Length': '100'
              }
    var req = http.request(options, callback);
    req.end();
    };

在删除该行之后: 'Content-Length':'100'它整理出来。

链接地址: http://www.djcxy.com/p/71461.html

上一篇: "Socket hang up" error during request

下一篇: Angular, content type is not being sent with $http