我正在尝试设置邮递员预请求,以便在向服务发出每个请求之前获取 OAuth 令牌。
我尝试遵循与此相关的各种示例和指南,每个示例和指南似乎都非常简单,尽管由于预请求脚本失败,我的脚本仍然存在问题。
恐怕这在某种程度上与这样一个事实有关,即我需要调用的endpoint来获取令牌是在超文本传输协议上,而不是在https上,因为在Postman控制台中,我总是收到对同一个url的两个单独的请求,一个在https上,一个在超文本传输协议上。
这是我的预请求脚本
pm.expect(pm.environment.has('host')).to.be.true;
pm.expect(pm.environment.has('client_id')).to.be.true;
pm.expect(pm.environment.has('client_secret')).to.be.true;
pm.expect(pm.environment.has('username')).to.be.true;
pm.expect(pm.environment.has('password')).to.be.true;
var options = { method: 'POST',
url: 'http://' + pm.environment.get("host") + '/api/oauth/token',
headers:
{
Authorization: 'Basic '+btoa(pm.environment.get("client_id")+':'+pm.environment.get("client_secret")),
'Content-Type': 'application/x-www-form-urlencoded'
},
form:
{
grant_type: 'password',
username: pm.environment.get('username'),
password: pm.environment.get('password'),
}
};
pm.sendRequest(options, function(err, response) {
console.log(response.json())
});
这是我在邮递员控制台上看到的
如图所示,第一个请求失败,第二个请求生成401HTTP响应。
如果我在请求前脚本之外运行相同的请求作为 http 上的“常规”邮递员请求,一切正常,但在 https 上我收到错误,因为甚至没有发出请求
如何使我的请求前脚本正常工作?
根据您的示例代码,我认为您打错了“headers”。如果你把它改成' header '就应该可以了。
我终于弄清楚了问题所在。
前脚本存在多个问题:
1)双重响应实际上与双重前脚本有关,一个在集合级别,一个在集合内的文件夹级别。
2)请求本身必须更改,因为许多部分不正确。正如阿莫所说,标题键是错误的,需要标题,但主体也不正确,因为它需要特定的格式。
在这里,您可以发现新请求工作正常
pm.expect(pm.environment.has('host')).to.be.true;
pm.expect(pm.environment.has('client_id')).to.be.true;
pm.expect(pm.environment.has('client_secret')).to.be.true;
pm.expect(pm.environment.has('username')).to.be.true;
pm.expect(pm.environment.has('password')).to.be.true;
var options = {
url: 'http://' + pm.environment.get("host") + '/api/oauth/token',
method: 'POST',
header: {
Authorization: 'Basic '+btoa(pm.environment.get("client_id")+':'+pm.environment.get("client_secret")),
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
},
body: {
mode: "urlencoded",
urlencoded: [
{key: "grant_type", value: "password", disabled: false},
{key: "username", value: pm.environment.get('username'), disabled: false},
{key: "password", value: pm.environment.get('password'), disabled: false}
]
}
};
pm.sendRequest(options, function(err, response) {
pm.environment.set("oauth_token", response.json().access_token)
});
这个预请求完美地工作,并将oauth_token存储在适当的变量中
如何调用POST API请求(具有用户名请求主体的登录API 登录API:POST方法;请求正文:用户名和密码;响应正文:令牌。获取客户记录API:GET方法;请求URI: /token/ 只想在邮递员的一个测试中涵盖这种端到端场景。任何人都可以帮我提供预请求脚本吗?我应该如何调用登录 API?
有人能帮助我如何使用以下参数发送POST请求吗: 我试着在《邮递员的身体》中发送一个带有以下参数的: 然而,在发送上述请求时,我得到的位置字符串为null。
我正试着在邮递员上打API。API正在服务器上工作,但我没有收到任何数据。以下是视觉图像: 它是回应我与“没有数据”和400错误的要求。
我使用Postman6.0发送HTTP请求。为了发送请求,我使用请求前脚本获取令牌并将其放入环境中,以便在后续请求中使用它。 下面的脚本不起作用,因为没有发送正文。下面的剧本有什么问题吗?
我创建了一个简单的Web API项目,我正试图用邮递员软件发布数据,但有些东西不起作用... 我的web api控制器的名称是ValuesController。 我的数据如下所示: 当我将Post方法修改为: 我收到邮递员的“坏请求”信息
我刚刚开始使用Postman测试我正在集成到的API。 我有以下错误不断出现 无效的CORS请求 注意以下几点: API使用承载令牌身份验证(OAuth2)。我有这个工作没有问题 到目前为止,我发现: 使用邮递员与Http POST请求-我没有得到粗体的部分 以防其他人遇到同样的问题,以下是解决方法。在chrome浏览器中https://www.getpostman.com/docs/captur