【问题标题】:How many cURL types we have? [closed]我们有多少 cURL 类型? [关闭]
【发布时间】:2014-12-08 18:23:51
【问题描述】:

我是 curl 新手,我正在使用 php 编程,我学会了使用这样的 curl 代码:

<?php
$content = 'PHP cURL';
$curl = curl_init('http://www.example.com/submit/get.php');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'var='.$content);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, FALSE);
$result = curl_exec($curl);
curl_close($curl);
?>

我想使用一个需要 curl 命令的 API,但在 api 文档中有一些类似这样的 curl 代码:

curl -X POST https://example.com/api/mail.send.json -d api_user=headortail -d api_key=XXXXXXXX

我很困惑,我不知道它是什么类型的卷曲。我可以在php中使用吗?

【问题讨论】:

    标签: php linux curl


    【解决方案1】:
    • libcurl 是 C 库。
    • cURL 是一个命令行工具,用于使用使用 libcurl 的 URL 语法传输数据。
    • PHP 有 his own binding 的 libcurl 库。

    在您的示例中,您要使用的 API 包含使用 cURL 命令行工具的示例。

    cURL 有很多选项来配置请求,同样,您必须使用 PHP 来配置请求。

    在我们提供的示例中:

    curl -X POST https://example.com/api/mail.send.json -d api_user=headortail -d api_key=XXXXXXXX
    

    PHP 中的等效代码是:

    <?php
           $params = array(
               'api_user' => 'headortail',
               'api_key'  => 'XXXXXXXX'
           );
           $curl = curl_init('https://example.com/api/mail.send.json');
           curl_setopt($curl, CURLOPT_POST, 1);
           curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
           $result = curl_exec($curl);
           curl_close($curl);
    ?>
    

    您可以在 cURL man page 中找到 cURL 工具的选项。 然后,使用 PHP 中的curl_setopt 函数,您应该在脚本中配置等效选项:

    在命令行中,-d 参数设置 HTTP POST 数据,然后,在 PHP 中,您需要在 curl_setoptCURLOPT_POSTFIELDS 选项(您可以在 curl_setopt 文档中找到它) /strong> 功能:

    curl_setopt($curlResource, CURLOPT_POSTFIELDS, &lt;array | string&gt;);

    【讨论】:

      【解决方案2】:

      cURL 是一个用于发出 HTTP 请求的 C 库。

      您的第一个示例使用 PHP 绑定,您可以从 PHP 访问它吗?

      您的第二个示例使用命令行应用程序。

      man curl 将为您提供解释命令行开关的文档。您可以使用在第一个示例中使用的绑定将命令行版本转换为 PHP 命令。

      【讨论】:

      • 我可以在php中使用命令行吗?
      • 您可以使用system 解决问题,但这是一种低效且难以调试的方法。当您将 PHP 绑定到要使用的库时,您不应该这样做。
      • 你的意思是绑定比较好。是吗?
      • 最好使用 PHP 绑定到库,然后打开一个 shell 并调用命令行客户端,它自己绑定到同一个库。编写自己的绑定会很愚蠢,因为已经有了标准的绑定。
      猜你喜欢
      • 2016-07-15
      • 2016-03-31
      • 2013-10-29
      • 2013-02-28
      • 2023-04-02
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      相关资源
      最近更新 更多