我使用R语言制作了一个REST API。
#* @get /mean
normalMean <- function(samples=10){
data <- rnorm(samples)
mean(data)
}
我启动了R服务器并使用url- http://localhost:8000/mean对API进行了测试,但它正在运行。
但是当我尝试使用nodejs调用API时,它会返回错误:
Error: socket hang up
at TLSSocket.onHangUp (_tls_wrap.js:1124:19)
at TLSSocket.g (events.js:292:16)
at emitNone (events.js:91:20)
at TLSSocket.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
这是nodejs代码:
var https = require('https');
var optionsget = {
host : 'localhost', // here only the domain name
// (no http/https !)
port : 8000,
path : '/mean', // the rest of the url with parameters if needed
method : 'GET' // do GET
};
console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');
var reqGet = https.request(optionsget, function(res) {
console.log("statusCode: ", res.statusCode);
// uncomment it for header details
// console.log("headers: ", res.headers);
res.on('data', function(d) {
console.info('GET result:\n');
process.stdout.write(d);
console.info('\n\nCall completed');
});
});
我不明白我哪里出错了。我打算在此之后以类似的方式提出看跌请求。
答案 0 :(得分:0)
这意味着套接字在超时期限内不会发送连接end
事件。如果您通过http.request
(而不是http.get
)收到请求。您必须致电request.end()
完成发送请求。
https.get('http://localhost:8000/mean', (resp) => {
console.log("statusCode: ", res.statusCode);
let result = 0;
// on succ
resp.on('data', (d) => {
result = d;
});
// on end
resp.on('end', () => {
console.log(result);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});