繁体   English   中英

PHP 运行 curl 命令

[英]PHP run a curl command

我有这个卷曲代码

curl -X POST https://url.com -H 'authorization: Token YOUR_Session_TOKEN' -H 'content-type: application/json' -d '{"app_ids":["com.exmaple.app"], "data" : {"title":"Title", "content":"Content"}}

用于从 Web 服务到移动应用程序的推送通知。 如何在 PHP 中使用此代码? 我看不懂 -H 和 -d 标签

你可以使用这个网站来转换任何这样的: https : //incarnate.github.io/curl-to-php/

但基本上d是有效载荷(您随请求发送的数据:通常是 POST 或 PUT); H代表标题:每个条目都是另一个标题。

所以最 1 对 1 的例子是:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://url.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"app_ids\":[\"com.exmaple.app\"], \"data\" : {\"title\":\"Title\", \"content\":\"Content\"}}");

$headers = array();
$headers[] = 'Authorization: Token YOUR_Session_TOKEN';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

但是您可以通过首先创建一个具有属性的数组然后对其进行编码来使其更加动态且易于操作基于 PHP 的变量:

$ch = curl_init();

$data = [
    'app_ids' => [
        'com.example.app'
    ],
    'data' => [
        'title' => 'Title',
        'content' => 'Content'
    ]
];

curl_setopt($ch, CURLOPT_URL, 'https://url.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$headers = array();
$headers[] = 'Authorization: Token YOUR_Session_TOKEN';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

我建议阅读 php-curl 的手册: https : //www.php.net/manual/en/book.curl.php

您也可以通过以下方式进行:

<?php
$url = "http://www.example.com";

$headers = [
    'Content-Type: application/json',
    'Authorization: Token YOUR_Session_TOKEN'
];

$post_data = [
    'app_ids' => [
        "com.exmaple.app"
    ],
    'data' => [
        'title' => 'Title', 
        'content' => 'Content'
    ],
];

$post_data = json_encode($post_data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);

// For debugging
$info = curl_getinfo($ch);

curl_close($ch);

echo '<pre>';
print_r($response);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM