【问题标题】:sending rest request via php通过php发送休息请求
【发布时间】:2013-08-29 23:22:49
【问题描述】:

我正在尝试发送 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",
   [...]
  }
  [...]
]}

这个例子想告诉我什么?那里的数据信息是什么?那是我需要发送的吗?如果是这样,我将如何发送它?我已经阅读了这篇文章:Call a REST API in PHP,但我仍然不确定如何组织我的通话。会是这样吗?

 $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);

【问题讨论】:

  • 总是这样,要了解详细信息,请参阅下面的答案,它解释了它是如何工作的。如果您遵循这一点,您应该能够将 any curl 命令行转换为 PHP。如果没有,请打开一个新问题,询问您遇到问题的具体部分(有些不太容易翻译,但大多数都是 1:1 非常容易翻译)。
  • 感谢您的回复。作为休息请求的新手,我想我想问的是: {"data"..... 是请求的一部分还是示例响应的一部分?我显然知道你不知道我正在使用什么系统,或者文档打算说什么,但是这种数据结构在 REST 中是否常见?
  • 好的,我明白了。这是回应的一部分。请求方法是默认的 (GET)。用户名和密码应该清楚。您上面的代码中的 HTTPAUTH 错误,请参阅下面的答案,它涵盖了该部分(我认为这是您犯的最重要的错误,可能是最难查找的错误)。
  • 我不知道您使用的是哪个操作系统,但我建议您在系统上安装 curl 并尝试您自己的请求。在任何情况下,当您处理 REST 或只是 PHP 时,在机器上安装 curl 是一种救命稻草,因为您可以使用它很容易地调试许多问题。 - curl.haxx.se/download.html - 我想说这对那些文档也很重要,如果它在命令行上也适用于你,你应该尝试一下。
  • 好的,如果您需要在 PHP 中调试 curl 请求,您可能会发现此问答很有帮助:Php - Debugging Curl

标签: php rest curl


【解决方案1】:

我从例子的开头说起:

$ curl

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

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

每个命令(通常)都有一个手册页,您可以使用 man 命令获得它:

$ man curl

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

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

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


例子:

$ 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 比较:

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2012-03-15
    • 2017-09-14
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多