user3062513
user3062513

Reputation: 410

Issue Sending REST Request From Node to Jetty

I am facing issue while sending REST (POST) request from Node.js to Jetty.When I send the same from a REST client it works fine. Here is the node js code:

    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);
});
};

Here is the error in 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)

Can someone help me to resolve this? Thanks

Upvotes: 1

Views: 588

Answers (1)

wero
wero

Reputation: 33000

You did not send any response content, and Jetty was waiting for the data until a timeout occurred.

To send the data call reqPost.write(...your data...) before reqPost.end().

Upvotes: 1

Related Questions