2016-02-17 4 views
2

У меня есть этот PHP код, который делает завиток вызов:Перевести на PHP Curl для вызова Баш Curl

$postData['api_user'] = 'username'; 
    $postData['api_key'] = 'password!'; 

$ch = curl_init('https://api.example.com/send.json'); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); 

Я знаю, что для того, чтобы сделать завиток вызов с JSON в Баш я должен сделать это:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource 

Но я запутался в том, как я могу передать весь мой PHP-код, чтобы колотить локон вызова, что я имею в виду, например, что будет эквивалентен curl_setopt() и передать полномочия как массив как я сделал с http_build_query()

+0

Почему бы вам не оставить его как PHP и использовать в командной строке PHP для его запуска? – user2182349

+0

Поскольку я хочу знать, как я могу запустить завиток, используя эти параметры – VaTo

ответ

1

Используйте cURL для отправки ваших данных как JSON.

curl -i \ 
-H "Accept: application/json" \ 
-H "Content-Type: application/json" \ 
-X POST --data '{"api_user": "username", "api_key":"password!"}' \ 
--insecure \ 
https://api.example.com/send.json 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); равна -k, --insecure.

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)) 

равна -X POST --data ...

CURLOPT_RETURNTRANSFER ... хм, я не знаю,)

+0

и внутри POST -data, я могу передать массив параметров, кроме пользователя api и ключа, правильно? – VaTo

+0

Да, '--data' равно POSTFIELDS. В основном данные, которые вы отправляете из браузера после заполнения формы и нажатия кнопки submit. Вы также можете взглянуть на man-страницу для cURL - https://curl.haxx.se/docs/manpage.html - просто найти «-data». –

+0

Спасибо, это было очень полезно – VaTo

0

-d является curl флаг отправить POST данные, но вам придется отформатировать его как JSON строка:

curl -H "Content-Type: application/json" -d '{ "api_user": "username", "api_key": "password" }' https://api.example.com/send.json 

А теперь остроумие ч эти дополнительные опции (смотрите их в curl man страницы):

curl -X POST -k -H "Content-Type: application/json" -d '{ "api_user": "username", "api_key": "password" }' https://api.example.com/send.json 

В гораздо дружелюбнее альтернативы curl я рекомендую проверить httpie. Вот как будет выглядеть ваш звонок с помощью httpie:

http --verify=no https://api.example.com/send.json api_user=username api_key=password 
Смежные вопросы