PHP запустить команду curl - PullRequest
0 голосов
/ 12 января 2020

У меня есть этот код скручивания

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"}}

, который используется для уведомления pu sh из веб-службы в мобильное приложение. Как я могу использовать этот код в PHP? Я не могу понять теги -H и -d

Ответы [ 2 ]

1 голос
/ 12 января 2020

Вы также можете сделать это следующим образом:

<?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);
1 голос
/ 12 января 2020

Вы можете использовать этот веб-сайт для преобразования любого из таких: https://incarnate.github.io/curl-to-php/

Но в основном d - это полезная нагрузка (данные, которые вы отправляете с запросом: обычно POST или ПОЛОЖИЛ); 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);

, но вы можете сделать его более динамичным c и легко манипулировать основанными 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...