标签: node-request

Nodejs 请求从服务器返回空正文作为 POST 请求

我正在使用 request ( https://github.com/mikeal/request )从节点发送 http post 请求,并且我返回一个 null body。从 hurl.it 发送的相同请求将返回带有正确正文的正确响应。从同一 Nodejs 服务器发送到同一服务器的另一个请求也返回正确的正文。真正令人气愤的是,上周它还可以工作,但现在在 Nodejs 中不再工作了。

我的 server.js 是:

var request = require('request');

request({
        uri: 'insert url here; contains sensitive info',
        method: 'POST',
        body: 'insert body here; contains sensitive info',
        followRedirect: true,
        maxRedirects: 10
        }, function(error, response, body) {
                console.log('body in response is: ' + body);
        });
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

谢谢。

javascript post httprequest node.js node-request

2
推荐指数
1
解决办法
3246
查看次数

Node.js 不能请求一个 squarespace 站点?

我正在尝试请求此网站,但我不断收到 400 Bad Request 错误。这段代码几乎适用于我尝试过的任何其他不是用 squarespace 构建的网站,所以我猜这就是问题所在。

var request = require('request');
var cheerio = require('cheerio');
var url = 'http://www.pond-mag.com/';



request(url, function(error, resp, body){
    if(!error){
        var $ = cheerio.load(body);
        console.log(body);
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript squarespace node.js node-request

2
推荐指数
1
解决办法
309
查看次数

NodeJS请求:如何获取响应作为字符串?

我有点迷路了。是否可以将响应主体作为字符串输入.on(response)(请参见下文)?还是我疯了?我知道我可以.pipe对进行响应WriteStream,但我需要将响应正文和响应statusCode放在同一位置,以便继续执行我的代码。谢谢!

var request = require("request");
request(url)
.on('response', function(response) {
    console.log(response.statusCode); // 200
    console.log(/* I need to get response body string here */); // <--- can I have the response body as a string here?
})
.on("error", function(err){
    console.log("Problem reaching URL: ", err);
});
Run Code Online (Sandbox Code Playgroud)

node.js express node-request

2
推荐指数
1
解决办法
2417
查看次数

NodeJS:请求库 - 使用 userQueryString 的正确方法是什么?

在请求文档中,它记录了设置“useQuerystring”,内容如下:

useQuerystring - if true, use querystring to stringify and parse querystrings, otherwise use qs (default: false). Set this option to true if you need arrays to be serialized as foo=bar&foo=baz instead of the default foo[0]=bar&foo[1]=baz.
Run Code Online (Sandbox Code Playgroud)

我正在使用的 API 需要向同一参数名称发送多个值;这个设置似乎表明可以在使用 useQueryString 时完成,但我似乎无法弄清楚在哪里/如何传递查询字符串,以便正确处理它以及以什么格式执行它。

例如,我在以下代码中尝试了多个不同位置的查询字符串:

let options = {
    uri: "https://api.mysite.com"[0],
    headers: {
        'Authorization': 'Bearer TOKEN_VALUE'
    },
    json: true,
    useQuerystring: true,
    querystring: "foo=bar&foo=baz",
    qs: "foo=bar&foo=baz",
    proxy: "http://localhost:8080",
    strictSSL: false,

};

request.get(options);
Run Code Online (Sandbox Code Playgroud)

当我在选项“querystring”中传递查询字符串时,它会忽略它(又名,它似乎是错误的位置)。当我把它放在“qs”的“正常”位置时;我最终得到发送到服务器的以下 URL:

"?0=f&1=o&2=o&3=%3D&4=b&5=a&6=r&7=%26&8=f&9=o&10=o&11=%3D&12=b&13=a&14=z"
Run Code Online (Sandbox Code Playgroud)

使用 useQuerystring 设置为 true 时传递查询字符串的正确方法是什么?

根据以下文件,它看起来没有改变查询字符串的位置,所以我认为它是 qs; 但如上所述,这不起作用: …

node.js node-request

2
推荐指数
1
解决办法
1289
查看次数

为什么 request.on() 在 Node.js 中不起作用

我正在尝试使用节点请求模块从第三方服务获取一些数据,并将此数据作为字符串从函数返回。我的看法是request()返回一个可读的流,因为你可以这样做request(...).pipe(writeableStream)- 我认为 - 意味着我可以做到

function getData(){
    var string;

    request('someurl')
        .on('data', function(data){
             string += data;
        })
        .on('end', function(){
            return string;
        });
}
Run Code Online (Sandbox Code Playgroud)

但这并不奏效。我想我对 request() 或节点流的真正工作方式有一些错误的看法。有人可以在这里澄清我的困惑吗?

javascript stream node.js node-request

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

从回调函数返回一个对象,这样包装函数可以返回node.js/express中的同一个对象

我试图从通过调用第三方API获得的数据返回我正在构建的对象.我正在使用Request(https://github.com/mikeal/request)模块来完成相同的工作.

但是,我想从回调函数返回此对象.

我的请求调用是javascript函数的一部分,我希望这个外部函数能够返回新构造的对象.我遇到问题是由于node.js的非阻塞性质,每当我尝试从外部函数返回对象时,它返回一个空对象,因为回调函数尚未构造对象.

我怎样才能做到这一点?

function getData(url){

  var myWeatherData = new Object();
  var data;

  request(url, function (error, response, body) {

    if (!error && response.statusCode == 200) {

      data = JSON.parse(body);

      myWeatherData.locationName = data.current_observation.display_location.full;
      myWeatherData.weather = data.current_observation.weather; 
      myWeatherData.temperature_string = data.current_observation.temperature_string;
      myWeatherData.relative_humidity = data.current_observation.relative_humidity;
      myWeatherData.wind_string = data.current_observation.wind_string;
      myWeatherData.feelslike_string = data.current_observation.feelslike_string;

    }
    return myWeatherData; // THIS IS A RETURN FROM CALL BACK 
  });   
// return myWeatherDataArr; -- THIS RETURNS AN EMPTY 
};
Run Code Online (Sandbox Code Playgroud)

javascript node.js express node-request

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

使用节点请求管道映像,但在非200 HTTP状态代码上中止

我正在尝试使用node-request通过管道传输存储在Amazon S3上的图像。但是,有时不存在图像,该图像由S3作为状态代码403公开。我正在努力查看如何在成功的情况下进行管道传输(200),但在非200的情况下采取替代措施。

r.abort is not a function尽管似乎应该在请求中可用,但使用abort()方法似乎是一种方法,但是却获得了。

// context: inside a request handler, where `res` is the response to write to
const r = request(url)
  .on('response', function (response) {
    if (response.statusCode !== 200) {
      r.abort(); //failing
      // I want to stop the piping here and do whatever instead.
    }
  })
  .pipe(res);
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

node.js node-request

0
推荐指数
1
解决办法
635
查看次数