2

我试图从代理后面的 REST api 获得响应。

当使用浏览器(chrome,IE)手动测试时,我可以在浏览器中配置代理时从 GET 请求中获取结果。

但是,当我尝试在 nodejs 中使用 npm 包请求承诺(在量角器 + jasmine 测试中)做同样的事情时,我得到错误:错误:无法建立隧道套接字:statusCode407

这是我的测试代码(尝试了两种方法):

'use strict';

describe('test suite', function() {

    it('REST test 1', function(){

        var request = require('request-promise');

        var url = 'https://environment/getId';
        var fullProxy = 'http://myProxy:8080';

        var proxiedRequest = request.defaults({'proxy': fullProxy});
        proxiedRequest.get(url).then(function(response){
            console.log('Response: ' + response);
        }).catch(function(error){
            throw new Error(error);
        });

    });

    it('REST test 2', function(){

        var request = require('request-promise');

        var url = 'https://environment/getId';
        var fullProxy = 'http://myProxy:8080';

        var options = {
            uri: url,
            proxy: fullProxy
        };

        request(options)
            .then(function(response){
                console.log('Response: ' + response);
            })
            .catch(function(err){
                throw new Error(err);
            });

    });

});

感谢您的时间和精力!

4

1 回答 1

6
import rp from 'request-promise';

const url = `https://environment/getId`;
const proxiedRequest = rp.defaults({ proxy: 'http://USER:PASSWORD@myProxy:8080' });
this.response = await proxiedRequest.get(url);

https://github.com/request/request-promise/issues/130

于 2018-09-25T22:35:09.283 回答