NodeJs /电子,请求发布未捕获请求正文

时间:2018-08-03 19:13:07

标签: node.js electron npm-request

我有一些无法使用的简单代码。尝试了几个库,所有这些库给了我类似的错误。我相信网站本身会以某种方式拒绝该请求。它包裹在电子应用程序中。

这是我收到的响应(不是典型的错误-该错误在响应正文中)

{"error":{"code":2,"message":"Query missing. `Are ya gonna search for something or what?`"}}

这是相关代码的片段,显示在我的应用程序的main.js中:

const request = require('request');
.
.
.
ipcMain.on('request-mainprocess-action', (e, args) => {

request({ body: JSON.stringify({"query": {"status": {"option": "online"}, "stats": [{"type": "and", "filters": []}]},"sort": {"price": "asc"}}}),
 followAllRedirects: true,
 headers: {
   'Content-Type': 'application/json',
   'Referer': 'www.pathofexile.com/trade/search/Incursion',
   'X-Requested-With': 'XMLHttpRequest' },
 method: 'POST',
 url: 'http://pathofexile.com/api/trade/search/Incursion'}, callback);

function callback(error, response, body) {

    if (!error && response.statusCode == 200) {
        e.sender.send('mainprocess-response', {
            type: args.query,
            data: body
        });
    } else {
        console.log(body);
    }
}
});

我尝试了一些变体,例如调用request.post或使用json对象和标志json:true。我还尝试了其他一些库,例如http,https和axios(axiom?)。...不走运。

使用IntelliJ http发布脚本/代码片段,我可以轻松地使其工作:

POST https://www.pathofexile.com/api/trade/search/Incursion
Referer: https://www.pathofexile.com/trade/search/Incursion
Content-Type: application/json,
X-Requested-With: XMLHttpRequest

{"query": {"status": {"option": "online"}, "stats": [{"type": "and", "filters": []}]},"sort": {"price": "asc"}}

上面的代码返回了大量文本,

Response code: 200 (OK); Time: 1426ms; Content length: 6755 bytes

不幸的是,我无法通过Electron致电:)...真的可以使用您的帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

只需将此行添加到您的请求标题中即可:

'Host': 'www.pathofexile.com', 

这是我使用node命令从侧面运行它的完整代码:

const request = require('request');


var payload = JSON.stringify({"query": {"status": {"option": "online"}, "stats": [{"type": "and", "filters": []}]},"sort": {"price": "asc"}});

request({ 
        body: payload, 
        followAllRedirects: true,
        headers: {
           'Content-Type': 'application/json',
           'Referer': 'www.pathofexile.com/trade/search/Incursion',
           'Host': 'www.pathofexile.com',
           'X-Requested-With': 'XMLHttpRequest' },
        method: 'POST',
        url: 'http://pathofexile.com/api/trade/search/Incursion'}, callback);

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log('Success: \n'+body);
    } else {
        console.log("Error: \n"+body);
    }
};

我得到了如下截图所示的结果: enter image description here