【问题标题】:request.getAsync() only returns 1 parametersrequest.getAsync() 只返回 1 个参数
【发布时间】:2016-01-14 17:38:42
【问题描述】:

我正在尝试获取返回 .cert 正文的请求,但使用 bluebird 的 .spread 似乎只返回 1 个参数,而不是应该返回的两个参数。

request.getAsync( {url: payload.publicKeyUrl, encode:null } )
    .spread( function(res, body){
        console.log(body);
    } );

这将抛出一个错误,即 body 未定义。响应返回整个 json 格式,包括与结构混淆的字符串格式的证书。

我正在使用请求 2.67.0 和 bluebird 3.1.1。 这是证书网址:https://static.gc.apple.com/public-key/gc-prod-2.cer

【问题讨论】:

    标签: node.js promise bluebird node-request


    【解决方案1】:

    Bluebird 3.0 将 promisification 更改为默认为在执行 promisification 时仅使用第一个参数。

    在您对Promise.promisifyAll(require("request")) 的调用中,您需要传递第二个参数以表明您对Promise.promisifyAll(require("request"), {multiArgs: true}) 的所有参数感兴趣

    或者,您可以使用 request-promise 包为您执行此操作并进行一些其他小修复(它在内部使用 bluebird)。

    【讨论】:

    • 谢谢!就是这样,但是我要指定什么才能正确获得证书?现在得到一个包含各种人工制品的字符串。
    • 我不知道你在问什么 - 但如果你在输出请求时遇到困难 - 承诺是一个更完整的包装 request 所以你可能想要考虑这一点,因为request 非常古怪。随意在网站上询问有关证书问题的另一个(单独)问题(并进一步解释,因为我不明白)
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多