【问题标题】:Tasker App: Why my HTTP POST is not sending parameters?Tasker App:为什么我的 HTTP POST 没有发送参数?
【发布时间】:2017-07-06 08:44:03
【问题描述】:

我正在使用 Tasker 应用程序发出一个简单的 HTTP POST 请求,它工作正常,但不知何故它没有发送我的参数。 HTTP GET 工作正常。我做错了什么?

服务器做的唯一一件事就是 JSON 字符串化所有接收到的参数并返回它们:Text: { parameters }

HTTP GET 正在工作:

HTTP POST 有效,它返回响应“text: {}”但不返回任何参数:

现在有时会显示“Bad Request Error 400”

我用另一台服务器测试过,这个问题仍然存在......

Here's a fiddle 将 get 和 post 请求发送到同一台服务器并且两者都可以工作。

我已将我的任务导出为 xml 供您测试:您可以 download it here

提前谢谢各位!

【问题讨论】:

    标签: android ajax xmlhttprequest tasker


    【解决方案1】:

    我已经对您提供的内容进行了一些测试。您的帖子参数似乎正在发送到服务器,但 %HTTPR 没有被填充。 Tasker 文档说,如果响应是“基于文本的”,则将填充此变量,但情况似乎并非如此。我可能不知道 Tasker 认为什么是“基于文本的”,但我尝试过“text/plain”和“text/html”,但没有成功。

    我想出的解决方法是使用 post 任务的“输出文件”字段将响应放入文件中。 (将“内容类型”留空,否则将不起作用。)然后您可以将文件读入变量并执行您需要的操作。

    这要么是 Tasker 中的缺陷,要么是不正确的文档,要么只是对如何使其工作的误解。但是,这种变通方法可以满足您的需要。

    这里是一个 link 到 GitHub 存储库,其中包含更新的任务导出。您可能需要更改输出文件名/位置才能使用您的设备。


    更新: 自从我发布了上述解决方案以来,我遇到了一个名为“RESTask for Tasker”的 Tasker 插件。显然,Tasker 对 HTML 请求有足够的问题,需要一个单独的插件。我已经用 POST 测试了这个插件,它确实有效,所以这是另一种方法。该插件可在 Google Play 商店中找到。

    【讨论】:

    • 感谢@Cheticamp。它对我有用!不幸的是,我计划将我的脚本导出为应用程序,因此我无法使用外部插件。但这是 Tasker 中一个完全奇怪的错误。它是关于 %HTTPD 和 Content Type 的,如果我将 Content Type 留空,%HTTPL 会显示正确的响应长度,但 %HTTPD 什么也不显示。如果我设置 Content Type 它不会发送参数(我也在服务器端测试过它真的没有):( 无论如何我只想发布一个文件,所以我什至不需要参数返回,我只需要发送它们,然后我得到一个“ok”作为响应。谢谢你的帮助!
    • 我很高兴它成功了。在我看来,这个缺陷在 Tasker 中已经存在了一段时间。我认为大多数 POST 请求都不会寻找除 OK 以外的响应,所以这可能不会出现很多。
    • 是的,因为我没有找到很多关于它的问题,所以我认为人们不会经常遇到这个错误。顺便说一句,即使要获得“好的”,我也需要编写文件,因为如果我使用 %HTTPD 来获取它,我必须设置内容类型,如果我设置它,则不会发送参数..跨度>
    • 是的。帮了我很多。谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 2021-11-16
    • 2018-03-27
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2021-06-30
    相关资源
    最近更新 更多