在这种情况下,我已经尝试获取返回的JSON,但是当我使用JSON.parse和JSON.stringify时,它返回undefined。如果我不使用并仅保留data = data.toString('utf8');
,请返回:
!!xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.rest.schema.CtLoginResp {error: null, sessionID: 6dMX4uGVurFdLRL+hW4F2kIW}
我想要sessionid ...但是如果我尝试得到这个,返回undefined,我尝试JSON.parse,JSON.stringify,看看:
我的代码:
var Client = require('./lib/node-rest-client').Client;
var client = new Client();
var dataLogin = {
data: { "userName":"xxxxxxxxxxx","password":"xxxxxxxxxxxxx","platform":"xxxxxxx" },
headers: { "Content-Type": "application/json" }
};
client.registerMethod("postMethod", "xxxxxxxxxxxxxxxxxxxx/login", "POST");
client.methods.postMethod(dataLogin, function (data, response) {
// parsed response body as js object
// console.log(data);
// raw response
if(Buffer.isBuffer(data)){ // if i remove buffer return is 21 22 etc etc
data = data.toString('utf8'); // this return all but String
var outputTe = data;
var res = outputTe.split(" ", 4);
res = res[3].split("}", 1);
}
console.log(res);
});
图片返回:
如果我不使用缓冲区返回是21 34 56等。
但如果我使用return就是图片中的所有 STRING data.toString();
......
修改
我尝试使用split
但只返回字符串“sessionid”,请参阅另一张图片:
我在W3学校内尝试相同的代码并且在我的代码中不起作用,但在W3学校测试工作正常:
2)
答案 0 :(得分:0)
在我使用正则表达式的情况下:
client.methods.postMethod(dataLogin, function (data, response) {
if(Buffer.isBuffer(data)){
data = data.toString('utf8');
console.log(data);
var re = /(sessionID: )([^,}]*)/g;
var match = re.exec(data);
var sessionid = match[2]
console.log(sessionid);
openRequest(numberOrigin);
}
});