POSTをリッスンしてデータを出力するNodeJsプログラムに定期的にデータを投稿するコードを作成しました。ただし、ヘッダーが通過する場合もあれば、ヘッダーと本体の両方が通過する場合もあります。データを投稿する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");
ヘッダーは常に印刷されます。受信するバイト数は、ヘッダーのバイト数とヘッダーのバイト数+本文の長さの間で長さが異なります。
なぜこれが起こるのですか?