【问题标题】:CURL send parameter in WindowsWindows 中的 CURL 发送参数
【发布时间】:2017-11-30 07:52:33
【问题描述】:

我想在 Windows Server 上使用任务调度程序运行我的脚本。 该脚本包含 PHP、HTML 和 Javascript。此脚本用于图像识别,应该每天运行。

如果我使用浏览器并在下面输入此网址

http://localhost/html/xpix/index.php?APICall=1&APICGI=1&APICode=0x00000008&APIFile=2017-11-02_08-00&DateToCompare=2017-11-02&DateToProcess=2017-11-02&ObjRecogMode=1&CheatMode=1

它工作正常。

但是在 CLI(Windows 命令提示符)和使用 curl 时,我已经尝试过以下操作

curl "http://localhost/html/xpix/index.php?APICall=1&APICGI=1&APICode=0x00000008&APIFile=2017-11-02_08-00&DateToCompare=2017-11-02&DateToProcess=2017-11-02&ObjRecogMode=1&CheatMode=1"

即使tried using -s parameter 也不起作用。它只是打印 HTML 代码。

我试过无头使用谷歌浏览器,但还是不行

chrome.exe --headless --disable-gpu --remote-debuging-port=9222 "http://localhost/html/xpix/index.php?APICall=1&APICGI=1&APICode=0x00000004&APIFile=2017-11-02_08-00&DateToCompare=2017-11-01&DateToProcess=2017-11-01&ObjRecogMode=1&CheatMode=1"

这个脚本还包含一个 Ajax 并调用 Java Web 服务并将数据保存到 MySQL 数据库。

是否有遗漏配置?

【问题讨论】:

  • 这行不通。 curl 不能执行 javascript,甚至 html。它只会将其读取为字符串。您应该直接拨打Java Web Service
  • 使用php -f 怎么样?这只是一回事吗?
  • 是的。你说你通过 AJAX 调用Java Web Service,这意味着它是 javascript。运行 javascript 的唯一方法是通过它的引擎(浏览器、nodejs、phantomjs)运行它。我认为你应该改变 cronjob 的工作方式。

标签: javascript php google-chrome curl


【解决方案1】:

你在这里遗漏了一些重要的东西。 当您从浏览器发出请求时,浏览器会呈现页面并运行进行 AJAX 调用的 Javascript。

当您从 curl 发出请求时,您发出纯 HTTP 请求并返回 HTML 文档的纯文本。这意味着不会有任何渲染,因为没有浏览器,这意味着没有 Javascript 将运行,从而导致没有 Ajax 脚本运行。

我建议您执行以下操作之一:

  • 使用 headless chrome 发出请求(阅读更多 here
  • 将请求直接发送到 AJAX url。
  • 使用 Selenium 编写 Python 脚本(阅读更多 here

【讨论】:

  • php -f怎么样?是一回事吗?
  • @NPE 那只是运行带有参数的 php 代码。 Javascript 代码仍然不会运行。
  • 试过headless chrome,还是不行。 CLI 刚刚退出,即使我的数据库或 Web 服务没有被触发,也没有任何工作。请查看我的问题。
【解决方案2】:

CURL 不会加载任何 javascript 代码,cURL 只获取 html 代码。您应该使用 PhantomJS 之类的东西从 index.php 页面中获取完整的结果,其中包含 ajax 调用和 JS 结果。

这里有一个如何使用 PhantomJS 的示例: http://phantomjs.org/api/webpage/property/content.html

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多