Создание POST-запроса с PHP - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь отправить сообщение через чат Broadcasting API. Я попробовал это на почте человека, и это работает. Но использование php не работает и дает мне false результат.

Запрос моего почтальона:

Screenshot

Почтальон Заголовки:

Postman Headers

И я успешно получаю сообщение:

{
  "result": "ok",
  "success": true
}

Я пытаюсь добиться этого с помощью кода. Итак, я попробовал:

    // Create map with request parameters
$params = array ('chatfuel_token' => 'protected', 'chatfuel_block_name' => 'protected');

// Build Http query using params
$query = http_build_query ($params);
$user_id = "userid";

// Create Http context details
$contextData = array (
            'method' => 'POST',

            'header' => "Connection: keep-alive \r\n".
                        "Content-Length: 30 \r\n",
            'Content-Type' => 'application/json',
            'content'=> $query );

// Create context resource for our request
$context = stream_context_create (array ( 'http' => $contextData ));

// Read page rendered as result of your POST request
$result =  file_get_contents (
              'https://api.chatfuel.com/bots/protected/users/'. $user_id .'/send',  // page url
              false,
              $context);

Но я получаю:

{
    "result": "0",
    "success": false
}

1 Ответ

0 голосов
/ 10 января 2019

Следующий фрагмент PHP соответствует тому, что вы сделали на Postman.

<?php

$request = new HttpRequest();
$request->setUrl('https://api.test.com');
$request->setMethod(HTTP_METH_POST);

$request->setQueryData(array(
  'chatfuel_token' => 'tokenid',
  'chatfueld_block_name' => 'blok1'
));
try {
  $response = $request->send();
  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

Просто замените URL и идентификатор токена.

Это может быть сгенерировано почтальоном.

Как только вы это заработаете, вы можете соответствующим образом настроить длину содержимого.

...