Не удалось отправить запрос php, но успешно с curl

Я пытаюсь отправить php-запрос на мой сервер rocket chat, я смог сделать это с помощью curl из командной строки, используя эту команду из api rocket chat:

curl -H "X-Auth-Token: xxxxx" -H
"X-User-Id: yyyyy" -H "Content-type:application/json"http://example:3000/api/v1/chat.postMessage -d '{ "channel":
"#general", "text": "Halo from Germany" }'

Но с помощью php мне никогда не удается это сделать (с помощью curl или без)

Следующий php-код возвращает false:

<?php

$url = 'http://example:3000/api/v1/chat.postMessage';

$data = json_encode(array('channel' => '#general', 'text' => 'Halo from Germany'));

$options = array( 'http' => array( 'header' => 'Content-type: application/json', 'X-Auth-Token' => 'xxxxx', 'X-User-Id' => 'yyyyyy', 'method' => 'POST', 'content' => http_build_query($data) ) );

$context = stream_context_create($options);

$result = file_get_contents($url, false, $context);

if ($result === FALSE) { /* Handle error */ }

var_dump($result);

?>

Спасибо за помощь

1

Решение

У php есть (parital) оболочка для libcurl, та же библиотека, которую использует curl cli для выполнения запросов, вы можете просто использовать libcurl из php.

<?php
$ch = curl_init ();
curl_setopt_array ( $ch, array (
CURLOPT_HTTPHEADER => array (
"X-Auth-Token: xxxxx",
"X-User-Id: yyyyy",
"Content-type:application/json"),
CURLOPT_URL => 'http://example:3000/api/v1/chat.postMessage',
CURLOPT_POSTFIELDS => json_encode ( array (
"channel" => "#general",
"text" => "Halo from Germany") )
) );
curl_exec ( $ch );
curl_close($ch);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]