gpt4 book ai didi

java - Nodejs 在 Java 程序成功 POST 时并不总是触发 'data' 事件

转载 作者:行者123 更新时间:2023-12-01 15:23:41 25 4
gpt4 key购买 nike

我编写了一些代码来定期将数据发送到 NodeJs 程序,该程序监听 POST 并打印数据。然而,有时头球可以通过,有时头球和 body 都可以通过。下面是发布数据的 Java 代码:

JSONObject dataObject = new JSONObject();
dataObject.put("test", "true");
URLConnection urlConn = thisSubUrl.openConnection();
urlConn.setDoInput (true);
urlConn.setDoOutput(true);
urlConn.setUseCaches (false);
urlConn.setRequestProperty("Content-Type", "application/json");
OutputStreamWriter wr = new OutputStreamWriter(urlConn.getOutputStream());
String dataStr = dataObject.toString();
wr.write(dataStr, 0, dataStr.length());
wr.flush();
wr.close();

BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
in.close();

服务器代码如下所示:

var server= http.createServer(function(req,res){
req.setEncoding('utf8');
console.log(req.headers);
req.on('data', function(chunk) {
console.log("Receive_Event::" + chunk);
});
req.on('end', function() {
console.log('on end');
});

console.log("Bytes received: " + req.socket.bytesRead);
if(req.method=='POST'){
handlePost(req,res);
} else{
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
}
}).listen(1338, "127.0.0.1");

标题总是被打印出来。接收到的字节数的长度不同,介于 header 中的字节数和 header 中的字节数+主体长度之间。

为什么会发生这种情况?

最佳答案

可能发生的情况是,在收到所有“数据”之前,您将发出 res.end() (不知道 handlePost 实际上做了什么) ” 大块。您应该在“结束”事件中调用所有额外的逻辑

var server= http.createServer(function(req,res){
req.setEncoding('utf8');

console.log(req.headers);

req.on('data', function(chunk) {
console.log("Receive_Event::" + chunk);
});

req.on('end', function() {
console.log('on end');
console.log("Bytes received: " + req.socket.bytesRead);
if(req.method=='POST'){
handlePost(req,res);
} else{
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
}
});


}).listen(1338, "127.0.0.1");

关于java - Nodejs 在 Java 程序成功 POST 时并不总是触发 'data' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com