0

自上周以来,Get-Record API-Endpoint 不再工作。请查看 node.js 片段和最后的屏幕截图。

正在获取商店中的密钥列表(第一个请求)。但是获取记录会导致混乱(第二次请求)。如果添加了 explizit 'Accept-Encoding: gzip',结果是一样的。你能核实一下吗?

干杯 Wulfgäääng

const request = require('request-promise-native');
const storeUrl = 'https://api.apify.com/v2/key-value-stores/z9UOmIgYF7oMxXkGS/';

(async () => {

    var results = await request({uri: `${storeUrl}keys`, json: true});
    console.log('Keys:');
    console.dir(results);

    results = await request({uri: `${storeUrl}records/testkey`, json: true});
    console.log('Record:');
    console.dir(results);

})();

截屏

4

2 回答 2

0

You are right, the response returns gzipped body. It is an issue on Apify API. You can force gzip headers using gzip: true parameter in your request like:

EDIT: It was fixed on Apify site. You need to add disableRedirect=true parameter to request URL as well.

const request = require('request-promise-native');
const storeUrl = 'https://api.apify.com/v2/key-value-stores/z9UOmIgYF7oMxXkGS/';

(async () => {

    var results = await request({uri: `${storeUrl}keys`, json: true, resolveWithFullResponse: true});
    console.log('Keys:');
    console.dir(results.headers);

    results = await request({uri: `${storeUrl}records/testkey?disableRedirect=true`, json: true, gzip: true });
    console.log('Record:');
    console.dir(results.headers);

})();
于 2020-02-10T09:00:00.777 回答
0

太好了,它正在工作。

不幸的是,我没有将 node.js 用于我的目的(本地看门狗)。我正在使用 Autohotkey,它利用了 Windows 'WinHttpRequest.5.1'(见下文)。

你知道,谁来强制使用“gzip”解码的“WinHttpRequest.5.1”?'Accept-Encoding: gzip' 也不起作用(见下文)。

干杯 Wulfgäääng

storeUrl := "https://api.apify.com/v2/key-value-stores/z9UOmIgYF7oMxXkGS/"

whr1 := ComObjCreate( "WinHttp.WinHttpRequest.5.1")
whr1.Open("GET", storeUrl . "keys", true)
whr1.SetRequestHeader("Accept-Encoding", "gzip")
whr1.Send()
whr1.WaitForResponse()
response := whr1.ResponseText

whr2 := ComObjCreate( "WinHttp.WinHttpRequest.5.1")
whr2.Open("GET", storeUrl . "records/testkey", true)
whr2.SetRequestHeader("Accept-Encoding", "gzip")
whr2.Send()
whr2.WaitForResponse()
response := whr2.ResponseText
于 2020-02-10T10:06:52.127 回答