gpt4 book ai didi

javascript - 为什么 Kimono API 以 404 响应?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:07 25 4
gpt4 key购买 nike

我正在尝试通过表格中的 Google 脚本更新我的 kimono API。工作表中有很多 url,但我在此示例中只显示了 2 个。

我收到 HTTP 错误 404。我已经检查过,apikey 和 id 没问题。

我怎样才能确定真正的问题是什么?

function PostParameters2() {

var parameters = {
apikey: "--apikey--",
urls: [
"https://twitter.com/search?q=%23running",
"https://twitter.com/search?q=%23swimming"
]
};

var data = JSON.stringify(parameters);

var url = 'https://kimonolabs.com/kimonoapis/--apiId--/update';

var options = {
'method': 'POST',
'content-Type': 'application/json',
'payload': data
};

var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getResponseCode());


}

最佳答案

使用 UrlFetchApp 调试外部主机通信时,有一些工具可供您使用。

  1. muteHttpExceptions 有助于查看它们。 (事实上​​,您可以简单地编写自己的代码来处理它们,并且只为您确实不希望出现的异常throw。)

    这是通过将 'muteHttpExceptions' : true 添加到您的 fetch 参数来完成的。

    在异常静音的情况下,fetch 不会抛出异常,而是会传递 HTTPResponse 中的失败响应代码。 .从那里,您可以提取响应代码和内容文本以进行调试(或自动处理)。

    像这样修改您的代码,以记录错误:

      var response = UrlFetchApp.fetch(url, options);
    var rc = response.getResponseCode();
    if (rc !== 200) {
    // HTTP Error
    Logger.log("Response (%s) %s",
    rc,
    response.getContentText() );
    // Could throw an exception yourself, if appropriate
    }

    运行,这是我们看到的:

    [15-08-27 11:18:06:688 EDT] Response (404.0) {
    "error": true,
    "message": "Could not find API"
    }

    某些 API 会提供非常丰富的错误消息。这个,没那么多。但它确实告诉我们,我们的 URL 是正确的,但服务找不到我们想要的 API。接下来,深入了解为什么会这样。

  2. 我们可以使用 getRequest() 检查 fetch 选项和参数.将此行添加到现有 fetch() 调用的正上方,并在 fetch() 上放置一个断点。

    var test = UrlFetchApp.getRequest(url, options);

    在调试器中启动函数,当遇到断点时,仔细检查test的内容。

    一个常见的问题是 POST 负载的编码。您将 # 手动编码为 %23 并使用了 JSON.stringify(),所以没有问题。

    检查其余选项,我们发现 contentType 不是 'application/json'

    debugger view

现在您查看您的代码,发现 contentType 的名称被错误键入为 content-Type。删除连字符,然后重试。

继续前进,直到您识别并修复任何其他错误。

另一个技巧是使用 encodeURIComponent()转义 fetch 参数中的受限字符,而不是手动编码它们。它简化了您的代码,因为您可以编写像 # 这样的“真实”字符,而不是像 %23 这样的 UTF-8 转义序列。

更新代码:

function PostParameters2() {

var parameters = {
apikey: "--apikey--",
urls: [
encodeURIComponent("https://twitter.com/search?q=#running"),
encodeURIComponent("https://twitter.com/search?q=#swimming")
]
};

var data = JSON.stringify(parameters);

var url = 'https://kimonolabs.com/kimonoapis/--apiId--/update';

var options = {
'method': 'POST',
'contentType': 'application/json',
'payload': data,
'muteHttpExceptions' : true
};

var test = UrlFetchApp.getRequest(url, options);
var response = UrlFetchApp.fetch(url, options);
var rc = response.getResponseCode();
if (rc !== 200) {
// HTTP Error
Logger.log("Response (%s) %s",
rc,
response.getContentText() );
// Could throw an exception yourself, if appropriate
}
else {
// Successful POST, handle response normally
var responseText = response.getContentText();
Logger.log(responseText);
}

}

关于javascript - 为什么 Kimono API 以 404 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com