根据本文档,我正在使用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'参数?
我在 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) 我正在尝试以形式发送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
在这里更多细节
我正在尝试从 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) 我正在使用请求将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进程究竟发生了什么?它挂了吗?什么是确保它被清理的正确方法,并没有留下半满的内存缓冲区?
我试图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)
任何的想法?
我正在尝试通过以下方式管理远程服务器处理请求:
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管道之前对请求进行任何处理都会导致问题.实际上,当我删除解析器时,管道似乎工作正常.
问题是我需要首先检查主体,进行一些初始处理,然后确定是否将请求通过管道传输到远程服务器上.所以我需要在管道之前解析身体.
有没有解决这个问题的方法?
该应用程序是基于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
我正在使用请求库进行外部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未定义.
我正在尝试将数据从我的节点应用程序发送到第 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) node-request ×10
node.js ×10
express ×3
curl ×1
http-proxy ×1
https ×1
javascript ×1
multiparty ×1
node-modules ×1
ogr2ogr ×1
stream ×1
web-crawler ×1