标签: node-request

什么是curl --upload-file在node-request中的等价物

根据本文档,我正在使用node-request并尝试将文件发送到IBM的HDFS .

传递此JSON对象以请求成功上载:

    var options = {
        method: 'put',
        body: 'foo',
        headers: {
            'Content-Type': 'application/octet-stream',
            'Transfer-Encoding': 'chunked'
        }
    };
Run Code Online (Sandbox Code Playgroud)

运行此CURL命令也成功上传了一个文件:

curl -v -X PUT -L -b cookie.jar "https://host:port/webhdfs/v1/tmp/myLargeFile.zip?op=CREATE&data=true" --header "Content-Type:application/octet-stream" --header "Transfer-Encoding:chunked" -T "file.txt"

但是,尝试指定文件流,如下所示:

    var options = {
        method: 'put',
        headers: {
            'Content-Type': 'application/octet-stream',
            'Transfer-Encoding': 'chunked'
        }, 
        multipart : [
            { body: fs.createReadStream(localFile) }
        ]
    };
Run Code Online (Sandbox Code Playgroud)

失败了,我不知道我哪里出错了.如何使用node-request从CURL重现'--upload-file'参数?

curl node.js node-request

7
推荐指数
1
解决办法
2759
查看次数

Node.js Express 应用程序在负载测试下花费太多时间来处理出站 HTTP 请求

我在 Linux 机器(Ubuntu 12.04 64 位,3.75GB 内存,1 核)上有一个 Express (node.js v0.10.29) 代理,它为每个传入请求发出一些出站 HTTP 请求。在进行负载测试时,我发现响应时间变得非常慢(在触发 1000 次时发出 4 个出站请求的请求大约需要 30 秒)。经过一番调查后,我确定出站请求是瓶颈,并消除了机器限制(CPU 和内存没有超过 20%,并且我将打开文件的数量增加到 10000)。首先,我使用 request 模块进行出站请求,尝试将其更改为 http 模块,并且对于这两个模块都尝试增加globalAgent.maxSockets、 using agent = false、使用我自己的代理以及任意数量的maxSockets、 设置request.setNoDelay(true)、 using cluster,但没有对结果做出任何改变我的负载测试。

可能是什么问题?

这是我的 HTTP 请求的最新代码:

var http = require('http');
var agent = new http.Agent();
agent.maxSockets = 100;

var doPost = function(reqUrl, body, next, onError) {
    var stringBody = JSON.stringify(body);
    var headers = {
        'Content-Type': 'application/json',
        'Accept-Encoding': 'gzip',
        'Content-Length': stringBody.length …
Run Code Online (Sandbox Code Playgroud)

node.js express node-modules node-request

5
推荐指数
1
解决办法
3077
查看次数

触发GET请求并获取节点Stream

我正在尝试以形式发送formData,使用请求获取的图片流

问题在于请求在请求之后被触发formData。有什么方法可以传送图像请求以识别?但是可以自由地向formData?添加参数?

例如:

var req = request({
  method: 'POST',
  url: 'http://www.foo.bar/api/v1/tag/recognize',
  formData: {
    image_file: request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg'),
    param2: 'value2'
  },
  json: true,
});
Run Code Online (Sandbox Code Playgroud)

我该如何射击:

request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg') 因此响应可以用于 req

更新:http://visual-recognition-demo.mybluemix.net/images/horses.jpg响应中似乎Content-Length缺少标题 ,您只会得到

Transfer-Encoding: chunked

在这里更多细节

node.js node-request

5
推荐指数
1
解决办法
4448
查看次数

如何使用 request.js 将网络图像通过管道传输到 s3 上传链接

我正在尝试从 url 获取照片并将其通过管道传输到上传到亚马逊 s3 存储桶的 PUT 链接。这个 PUT 链接是一个预先签名的上传 url,所以所有需要发生的是 PUT 请求的正文需要包含照片数据。

我尝试了以下操作,但似乎不起作用 - 它似乎没有通过 get.get 中的任何数据。

var request = require('request');

request.get('https://SomeUrlThatRedirectsAFewTimes.com').pipe(request.put('https://mys3uploadlink.com'));
Run Code Online (Sandbox Code Playgroud)

node.js node-request

5
推荐指数
1
解决办法
2659
查看次数

如何安全地中止NodeJS中的管道流?

我正在使用请求将HTTP流传输到本地地理空间文件处理实用程序,ogr2ogr:

    httpStream.on('response', function(response) {
        var ogr = ogr2ogr(response)
                .skipfailures()
                .options(['-t_srs', 'EPSG:4326']);
Run Code Online (Sandbox Code Playgroud)

但是,如果我收到的文件太大,我想中止:

        response.on('data', function (chunk) {
            len += chunk.length;
            if (!abort && len > convert.maxConversionSize) {
                tooBigError(request, res);
                abort = true;
                httpStream.abort();
                // response.destroy(); //??
            }
Run Code Online (Sandbox Code Playgroud)

打电话httpStream.abort()够了吗?ogr2ogr进程究竟发生了什么?它挂了吗?什么是确保它被清理的正确方法,并没有留下半满的内存缓冲区?

stream node.js node-request ogr2ogr

5
推荐指数
0
解决办法
616
查看次数

执行https请求时出现CERT_UNTRUSTED错误

我试图https request从我的节点服务器端执行,但它给我以下错误: -

Caught exception: Error: CERT_UNTRUSTED
Run Code Online (Sandbox Code Playgroud)

如果我执行http request然后它工作正常但https 链接 不起作用.

这是我的代码: -

var request = require('request');
request('https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})
Run Code Online (Sandbox Code Playgroud)

任何的想法?

https node.js node-request

5
推荐指数
1
解决办法
3524
查看次数

node express/request:使用正文解析来管理POST请求

我正在尝试通过以下方式管理远程服务器处理请求:

var destination = request(url);
req.pipe(destination).pipe(res);
Run Code Online (Sandbox Code Playgroud)

这适用于GET请求.但对于POST要求,我正在努力.我认为需要注意的一点是,对于POST请求,我在POST路由处理程序之前使用了一个正文解析器,以便从POST请求中提取正文...它只是一个基本的文本正文解析器,因为正文包含纯文本:

var postRouteHandler = someFunction;
var bodyParser = require('body-parser');
var textParser = bodyParser.text({
    limit: '50kb'
});
app.use('/postRoute', [textParser, postRouteHandler]);
Run Code Online (Sandbox Code Playgroud)

这个问题这个问题来看,我觉得在POST管道之前对请求进行任何处理都会导致问题.实际上,当我删除解析器时,管道似乎工作正常.

问题是我需要首先检查主体,进行一些初始处理,然后确定是否将请求通过管道传输到远程服务器上.所以我需要在管道之前解析身体.

有没有解决这个问题的方法?

javascript node.js express node-request

5
推荐指数
1
解决办法
5553
查看次数

HTTP代理错误状态代码

该应用程序是基于Node.js的Web爬网程序,它通过request库向远程服务器发出请求.

请求是通过经过身份验证的HTTP代理服务器进行的,其运行时间为99%,并且由第三方供应商提供.

我正在尝试处理HTTP代码以应对可能由代理故障引起的请求错误响应.预计在达到这些HTTP代码的阈值后,将触发代理不可靠的标志,因此代理将排队等待诊断.我希望一些代码能够有更多的重量.

目前我正在为代理处理407(代理身份验证)和408(请求超时)HTTP代码.

是否存在通常由HTTP代理故障引起的其他HTTP代码?

我希望这个问题足够具体.我假设可能的故障(以及一组可能的HTTP错误状态代码)取决于实际代理及其环境.我们应该考虑这些代理黑盒子,因为它们是由第三方提供的.

问题不在于一般的HTTP状态代码,只有错误代码可能由故障代理(转发代理)引起.

web-crawler http-status-codes http-proxy node.js node-request

5
推荐指数
1
解决办法
2382
查看次数

Nodejs Request Promise如何显示状态代码

我正在使用请求库进行外部api调用.https://github.com/request/request.我正在使用本机promise/async扩展.https://github.com/request/request-promise-native.

但是我无法检查状态代码,它是未定义的.

public async session(): Promise<any> {

    const url = <removed>;

    const options = {

        uri: url,
        headers: {
            'Authorization': this.config.token
        },
        json: true,
        body: {
        }
    }

    try {
        const res = await request.post(options);

        if (res.statusCode !== 200) {
            // do something
        }
        console.log(res);
        console.log("statuscode", res.statusCode)
        return res;
    } catch (err) {
        return err;
    }
}
Run Code Online (Sandbox Code Playgroud)

res.statusCode未定义.

node.js express node-request request-promise

5
推荐指数
1
解决办法
8405
查看次数

使用 request 和 multiparty 进行 multipart/form-data 时,出现错误:uncaughtException:source.on 不是函数

我正在尝试将数据从我的节点应用程序发送到第 3 方 HTTP 端点。

我正在使用多方模块解析来自客户端的请求对象上的数据,并通过请求模块发送数据。我收到错误

错误:uncaughtException:source.on 不是函数

var request = require('request');
const multiparty = require('multiparty');

function addAttachment(req, res) {
  let form = new multiparty.Form();
  let parsedFile = {};
  const formData = {};
  form.parse(req, function(err, fields, files){
    Object.keys(fields).forEach(function(name) {
      formData[name] = fields[name][0];
    });

    Object.keys(files).forEach(function(name) {
      logger.debug(name);
      parsedFile[name] = files[name][0];
    });
    formData.uploadFile = parsedFile.uploadFile;
    logger.debug('formData ', formData);

    reqOptions.url = imageURL;
    reqOptions.formData = formData;

    logger.debug('REQ_OPTIONS ', reqOptions);

    request.post(reqOptions, function (err, response, body) {
      if (err) {
        logger.warn(req, ' Error sending attachment', err); …
Run Code Online (Sandbox Code Playgroud)

multipartform-data node.js node-request multiparty

5
推荐指数
2
解决办法
2万
查看次数