我尝试发送base64 json表单节点。将js服务器返回到python flask服务器,然后将相同的base64代码返回到节点。js服务器。Flask可以成功接收我的json,但当它响应到节点时,节点尝试打印响应。我收到一条错误消息:“JSON输入意外结束”。我发现原因是节点服务器无法完全接收base64。它只收到一小部分。有什么问题?post请求是否有字符串限制?
我在将base64代码更改为短字符串时进行了测试。节点服务器可以正常接收响应。
有人能帮我吗?非常感谢。
这是我的代码:
var express = require('express');
var http = require('http');
var app = express();
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(10000, () => console.log('Running on http://localhost:10000'));
postData = JSON.stringify({
'code': <base64 code or short string here>
});
var options = {
hostname: 'localhost',
port: 10001,
path: '/test',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData)
}
};
var req = http.request(options, (res) => {
res.on('data', (chunk) => {
var data = JSON.parse(chunk);
console.log(data.message);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.write(postData);
req.end();
from flask import Flask
from flask import request
from flask import jsonify
app = Flask(__name__)
@app.route('/test', methods=['POST'])
def test():
request_data = request.get_json()
print(request_data['code'])
return jsonify(
message = request_data['code']
)
app.run(host='localhost', port=10001)
在NodeJS代码中,在数据
事件中,您将获得块数据(部分数据),您需要等待结束
事件,然后进行解析,下面的示例可能会对您有所帮助
var req = http.request(options, (res) => {
var data = '';
res.on('data', (chunk) => {
data += chunk.toString(); // buffer to string
});
res.on('end', () => {
data = JSON.parse(data);
console.log(data.message);
console.log('No more data in response.');
});
});