我正在创建一个基本的反向代理来将客户端请求传递到远程服务器。
因此,我将 body-parse 与 express.js 一起用于 Node 服务器,以允许我传递正文。
但是 JSON 中包含换行符和额外的大括号。
客户端
{
"lastRefreshedDateTime" : "2015-05-24",
"uid" : "1232141451"
}
服务器端
{
'{
\r\n"lastRefreshedDateTime": "2015-05-24",
\r\n"uid
": "1234567124321"\r\n
}\r\n': ''
}
Node.js 代码
var express = require('express');
var http = require('request');
var path = require('path');
var url = require("url");
var bodyParser = require("body-parser"); //this is required in express 4.x to output the contents of the client request body
var app = express(); //start express server
// parse application/x-www-form-urlencoded
//app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser().json())
// POST - getLocationData
app.post('/getLocationData', function (request, response)
{
console.log("Request for /getLocationData");
forwardRequest(request, response, "getLocationData", "POST", true);
});
app.listen(8080);
function forwardRequest(request, response, serviceName, requestMethod, isJSON)
{
console.log("Making request to EAS for " + serviceName + ":");
console.log(request.body); //json is fubar!
};
我自己尝试删除换行符,但仍然没有解决额外的大括号和倒置命令的问题
最佳答案
在客户端丑化 json。在发送字符串之前去掉 pretty-print ,应该可以消除问题。
在客户端使用 JSON.stringify
,在服务器端使用 JSON.parse
。
edited to reflect comments
引用您关于JMeter usage的问题,您遇到的问题实际上可能是由 Jackson 或另一个 Java JSON 库引起的。 将内容类型编码设置为 UTF-8 通常可以完全解决该问题。
关于json - Node.js 中的正文解析不会转义请求正文中的换行符? JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427176/