【问题标题】:Get-Record-API request not working any moreGet-Record-API 请求不再起作用
【发布时间】:2023-03-29 18:31:01
【问题描述】:

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

正在获取存储中的密钥列表(第一个请求)。但是获取记录会导致混乱(第二次请求)。如果添加了 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);

})();

【问题讨论】:

    标签: algorithm api debugging apify


    【解决方案1】:

    很好,它正在工作。

    不幸的是,我没有将 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
    

    【讨论】:

    • 对不起,我不知道 WIN req 客户端。尝试找到具有相应问题的其他线程。但是您需要添加 Accept-Encoding: "gzip" 并且它会起作用。我会让你知道这个修复,我想我们会在一天内部署它。
    • 您可以再尝试一件事,将参数 disableRedirect=true 添加到 URL 中。您可以在此处查看有关参数的更多信息 -> docs.apify.com/api/v2#/reference/key-value-stores/record/…
    • 在 Apify 上已修复,但您仍需要在请求 URL 中添加 disableRedirect=true 参数。
    【解决方案2】:

    你是对的,响应返回压缩后的正文。这是 Apify API 上的一个问题。您可以在请求中使用 gzip: true 参数强制 gzip 标头,例如:

    编辑:它已在 Apify 网站上修复。您还需要在请求 URL 中添加 disableRedirect=true 参数。

    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);
    
    })();
    

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多