【问题标题】:get some word from return String - rest function从返回字符串中获取一些单词 - 休息函数
【发布时间】:2017-02-07 13:24:22
【问题描述】:

在这种情况下,我已经尝试获取返回的 JSON,但是当我使用 JSON.parse 和 JSON.stringify 时,它返回未定义。如果我不使用并只留下data = data.toString('utf8');,则返回:

!!xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.rest.schema.CtLoginResp {error: null, sessionID: 6dMX4uGVurFdLRL+hW4F2kIW}

我想要 sessionid...但是如果我尝试获取这个,返回未定义,我尝试 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 学校测试工作正常:

1)

2)

【问题讨论】:

    标签: json node.js rest buffer


    【解决方案1】:

    如果我使用正则表达式:

    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); 
          }
        });
    

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2018-04-10
      相关资源
      最近更新 更多