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