Reputation: 410
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
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