当前位置: 代码迷 >> java >> 从节点向码头发送REST请求的问题
  详细解决方案

从节点向码头发送REST请求的问题

热度:31   发布时间:2023-07-17 20:36:08.0

从Node.js向Jetty发送REST(POST)请求时遇到问题,当我从REST客户端发送相同请求时,它可以正常工作。 这是节点js代码:

    var postheaders = {
    'Content-Type' : 'application/json',
    'Content-Length' : Buffer.byteLength(jsonObject, 'utf8')
};
var optionsPost = {
    host : '127.0.0.1', // here only the domain name
    // (no http/https !)
    port : 8080,
    path : '/external/session', // the rest of the url with parameters if needed
    method : 'POST', // do GET
    headers :postheaders    
};

console.info('Options prepared:');
console.info(jsonObject);
console.info('Do the POST call');


var reqPost = https.request(optionsPost, function(res) {
    console.log("statusCode: ", res.statusCode);
    // uncomment it for header details
//  console.log("headers: ", res.headers);


     res.on('data', function(d) {
        console.info('POST result:\n');
        process.stdout.write(d);
        resp.contentType('application/json');
        resp.send(d);
        console.info('\n\nCall completed');
    }); 


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

这是Jetty中的错误:

Jul 30, 2015 4:18:58 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30001/30000 ms
    at org.eclipse.jetty.util.SharedBlockingCallback$Blocker.block(SharedBlockingCallback.java:234)
    at org.eclipse.jetty.server.HttpInputOverHTTP.blockForContent(HttpInputOverHTTP.java:67)
    at org.eclipse.jetty.server.HttpInput$1.waitForContent(HttpInput.java:500)

有人可以帮我解决这个问题吗? 谢谢

您没有发送任何响应内容,并且Jetty正在等待数据,直到发生超时。

要发送数据,请在reqPost.end()之前调用reqPost.write(...your data...) reqPost.end()