通过php发送rest请求


sending rest request via php

我正在尝试发送一个REST请求。系统文档给我的例子是:

 $ curl --digest -u admin:<passwd> http://1.2.3.4/r/users/12345/calls/recent
{"data": [
  {"state_msg": "Finished",
   "code": 200,
   "dst_codecs": "PCMU,PCMA,iLBC,telephone-event",
   "src_codecs": "PCMU,PCMA,telephone-event,iLBC",
   "pid": 1250018007,
   "url": "'/r'/users'/12345'/calls'/1250018007:16739",
   [...]
  }
  [...]
]}

这个例子想告诉我什么?那里的数据信息是什么?这是我需要寄的吗。如果是,我将如何发送?我读过这篇文章:用PHP调用一个REST API,但我仍然不确定如何构造我的调用。会是这样的吗?

 $data = array('state_msg' => 'state_msg','code'=>'200'.....);
 curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 curl_setopt($curl, CURLOPT_USERPWD, "admin:<password>");
 curl_setopt($curl, CURLOPT_URL, "http://1.2.3.4/r/users/12345/calls/recent");
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

我从示例的开头开始:

$ curl

$符号表示具有标准用户权限的unix shell提示符。

然后用一个空格分隔命令,这里是curl

每个命令(通常)都有一个手动页面,您可以通过man命令获得:

$ man curl

这应该会向您解释其余的内容,因为这些手册页解释了所有的命令开关和选项。

如果你手头没有这样的shell提示,并且你不想考虑安装它,那么许多命令在互联网上也有它们的手册页。这里是卷曲:

  • http://curl.haxx.se/docs/manpage.html

在您了解了该具体命令的作用之后,只需在curl_setopt页面上查找PHP手册中的相关选项。下面的例子演示了它的工作原理:

  • 将命令行cURL转换为PHP cURL

示例:

$ curl --digest -u admin:<passwd> http://1.2.3.4/r/users/12345/calls/recent
       ########

此开关与CURLOPT_HTTPAUTH设置的CURLAUTH_DIGEST值有关。

$handle = curl_init($url);
curl_setopt_array($handle, [
    ...
    CURLOPT_HTTPAUTH => CURLAUTH_DIGEST, // --digest
    ...
]);

与刚刚用PHP包装的Curl C-API进行比较:

  • 如何使用libcurl使用摘要身份验证发布http请求