2

很棒的评论线程: https ://stackoverflow.com/a/6398220/1679026给了我希望,但我没能解决我的问题。当我使用 cURL 来获取 www.php.net 页面时,它可以工作,所以 cURL 可以工作

我有一个位于本地 LAN ( http://192.168.1.117 ) 上的网络设备,或者在我的客户端站点上,设备 (n) 位于其 LAN (173.18.13.xxx) 上。从 Local_Browser_Address 我可以键入“ http://192.168.1.117/#diag/term&cmd=signage+sign+ALARM ”,网络设备会响应更改为“ALARM”状态。<-- 这就是我想用一键自动完成的!

在我的 web 表单上,当单击 Alarm_Button 时,我有 $_POST PHP 代码要执行。我希望我的客户物理站点上的用户能够在他们的浏览器中单击我的 web_form (www.mySite.com/index.php?option=com_rsform&formId=27) 上的 the_button 并让 cURL 代码发送/发布/执行(http-ALARM) 地址/指令字符串。我可以做这件事吗?在发送地址/指令时或之后不需要 UI。

我试过:

     $c = curl_init('http://192.168.1.117/u/r/l');
     curl_setopt($c, CURLOPT_HTTPHEADER, array('#diag/term&cmd=signage+sign+ALARM'));
     curl_exec($c);

     $curl = curl_init();
     echo"<br>  the curl resource is ch --> $curl";
     curl_setopt ($curl, CURLOPT_URL, "http://192.168.1.117");
     curl_setopt ($curl, CURLOPT_POST, "/#diag/term&cmd=signage+sign+CELL_IN_ALARM");
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     $result = curl_exec ($curl);
     curl_close ($curl);
     echo"<br>  The RESULT (1) is --> $result";

没有错误消息,但没有有用的结果。

首先:恐怕我会被诸如“no_outside_web_page_doing_junk_locally”之类的规则之类的安全限制所阻止。

如果我必须在内部 Web 服务器上创建本地页面,我可以在同一/相邻网络上的另一台设备上执行此操作。但是问题仍然存在,如何在 cURL 工具中表达 ip/command 指令。

我已经搜索了 StackOverFlow 信息,看起来我很接近但在某处错过了“明显的真相”!

希望我的挑战值得你关注。谢谢你。 - -更新 - -

HTTPFox 捕获 POST 事件 突出显示的(484)上方和下方的“已发送”值(461)具有各自的POST数据:{“version”:“1.1”,“method”:“unit.baseInfo”,“id”:28,“params ":[]} {"version":"1.1","method":"term.cmd","id":29,"params":["signage sign CELL_IN_ALARM"]} {"version":"1.1" ,"方法":"unit.baseInfo","id":30,"params":[]}

这显示了类型 application/jason 和 URL - http://192.168.1.117/jasonrpc-(jasonRemoteProcedureCall?)

这会使我的斗争变得简单还是复杂?

-- 新更新 --

当我运行以下代码时,我得到了 php.net 主页和一个空白返回“...is -->”作为第二个返回...

// From http://www.tuxradar.com/practicalphp/15/10/2
  $curl1 = curl_init();
    curl_setopt ($curl1, CURLOPT_URL, "http://www.php.net");
    curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($curl1);
    curl_close ($curl1);
    print $result;
//====================
  $curl = curl_init();
    curl_setopt ($curl, CURLOPT_URL, "http://192.168.1.117");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($curl);
    curl_close ($curl);
    //print $result;
  echo"<br>  The RESULT (1) is --> $result";

第一个是 www,第二个是我网络上的设备。这是原始的网络/Web 冲突吗?真的很欣赏这里的大脑循环!

4

1 回答 1

1

你在想CURLOPT_POSTFIELDS

这可以像这样使用

$ch = curl_init($site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "field1=value1&field2=value2&field3=value3");
$chx = curl_exec($ch);

还应注意 CURLOPT_POST 根据此处找到的文档仅采用 TRUE 或 FALSE

于 2012-11-16T03:42:57.117 回答