我正在创建一个基本的反向代理,以将客户端请求传递给远程服务器。
所以我使用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!
};
我自己尝试删除新的行字符,但它仍然无法解决额外的大括号和倒置的commans的问题
答案 0 :(得分:2)
在客户端丑化json。在发送字符串之前删除漂亮的打印,它应该消除问题。
在客户端使用JSON.stringify
,在服务器端使用JSON.parse
。
编辑以反映评论
关于JMeter usage的问题,您遇到的问题可能实际上是由Jackson或其他Java JSON lib引起的。 将内容类型编码设置为UTF-8 通常可以完全解决问题。
答案 1 :(得分:0)
您需要body-parser
,但您似乎永远不会使用它..
app.use(bodyParser());
把它放在需要
之后