如何从邮递员的响应标头中提取特定的字符串值?

Posted

技术标签:

【中文标题】如何从邮递员的响应标头中提取特定的字符串值?【英文标题】:How to extract a particular string value from response header in postman? 【发布时间】:2020-02-22 13:43:17 【问题描述】:

我有下面的字符串,想提取代码的值。我使用了 split 函数,但它在邮递员中运行良好,但是当我在 newman 中执行相同时,它会出错。

header1=https://debugger.com/ultradebugcode?code=EgxIZAAU3uHVt20pc9qqpv-xNcAWxitpB0vgMiulNLG2hkysukmjR04Fxxnuz9Yb&state=ABC

我想提取代码的值。在这种情况下是

EgxIZAAU3uHVt20pc9qqpv-xNcAWxitpB0vgMiulNLG2hkysukmjR04Fxxnuz9Yb

我使用的代码是

    var str= pm.response.headers.get('header1');
    var str1= str.split('code=', 2)[1];
    var code= str1.split('&', 2)[0]; // get the code

它在邮递员中运行良好,但为什么纽曼在这里给出错误?

【问题讨论】:

那不是查询参数而不是标头吗? 不,这个长字符串正在响应标头中返回。标头名称为“header1” 这不是您添加到问题中以显示这一点的内容 - 您已经在查询参数的 code 值中显示了具有该值的 URL。这在 Postman 中是什么样的?可以分享一张图片吗? 如果标题有键 header1 然后 pm.response.headers.get('header1') 会给你那个值。不知道你为什么要在之后做所有其他的事情? 我不确定您是否是该网站的新手,但请将这些详细信息添加到问题中而不是 cmets。 【参考方案1】:

这对我有用:

let str = pm.response.headers.get("header1").split("code=")[1]

console.log(str.split("&")[0])

【讨论】:

也试过了。它在邮递员中有效,但在纽曼中失败。使用此代码在 newman 中也出现以下错误。 您使用的是什么版本的纽曼?您确定在这些请求中返回了标头吗?您是否尝试过将代码的不同部分记录到控制台以确保其实际拆分 something - 如果使用相同的集合来调用相同的端点,则没有理由不这样做工作一样。 newman 版本是 4.5.3。我今天试图隔离问题。 API 仅在状态码为 302 时返回 header1。在邮递员中它可以正常工作,没有任何问题。但是在 newman 相同的集合中,当我执行并隔离 prob 时,我只执行了这个请求,并在 newman 中看到它返回 200 OK,因此不返回 header1。有点奇怪,有些东西在邮递员中运行良好,而在纽曼中却不起作用 试试这个启用--ignore-redirects 它只是自动跟随重定向或 3xx 响应系列。应用程序中有一个设置可以在应用程序中自动关注它们,因此您可能看不到相同的行为。查看Settings 选项。

以上是关于如何从邮递员的响应标头中提取特定的字符串值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HttpResponseMessage 中获取特定的标头值

未从响应标头中的后端获取 JWT 令牌

邮递员控制台错误标头内容包含无效字符

如何提取字符串中的特定值

在 Postman 测试中检查响应标头的值

如何从 axios 响应对象中的所有项目中提取特定值到 vuex 状态