Вызов неопределенной функции GuzzleHttp \ Psr7 \ get_message_body_summary () - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь выполнить запрос получения CURL в guzzlehttp, чтобы проверить, существует ли пользователь в CRM. Всякий раз, когда я пытаюсь выполнить запрос, в заголовке появляется следующая ошибка, я не могу найти никаких ресурсов в сети для этой указанной c проблемы. Любые идеи будут очень полезны, если вам нужна дополнительная информация, пожалуйста, дайте мне знать в комментариях.

Включенные пакеты:

require(__DIR__ . "/../../vendor/autoload.php");
require_once(__DIR__ . "/../../helpers/Validation.php");
use Symfony\Component\Dotenv\Dotenv;
use GuzzleHttp\Client;
use GuzzleHttp\Request;
use GuzzleHttp\RequestOptions;
use GuzzleHttp\Psr7;
use GuzzleHttp\Stream\Stream;
use Drupal\Core\Site\Settings;

// Load our environment variables
$dotenv = new Dotenv();
$dotenv->load(__DIR__ . "/../../.env");

private function checkDuplicate() {
  // If no errors we can submit the registrant
  // \Drupal::logger('signup')->notice("access token", print_r($this->_accessToken, TRUE));
  if(!$this->_errors) {
    $checkNewUser = new Client();
    try {
      $options = [
        'headers' => [
        'Content-Type' => 'application/x-www-form-urlencoded',
        'Authorization' => "Bearer " . $this->_accessToken
      ],
      "query" => '$filter=email%20eq%20"' .$this->_email . '"&$fields=Contact Key,First Name,Last Name'
    ];
    $result = $checkNewUser->get($_ENV['REST_API_URL'], $options);
  } catch (RequestException $e) {
    \Drupal::logger('signup')->error("error " . print_r($e->getRequest(), TRUE));
    if ($e->hasResponse()) {
      \Drupal::logger('signup')->error("error " . print_r($e->getRequest(), TRUE));
      echo $e->getRequest() . "\n";
      \Drupal::logger('signup')->error("error " . print_r($e->getResponse(), TRUE));
    }
  }
}

У меня есть функция отправки запроса для получения токена доступа, который работает правильно.

private function getAccessToken() {
  try {
    $requestAccessToken = new Client();

    $options = [
      'headers' => [
        'Accept'     => 'application/json',
      ],
      "form_params" => [
        "grant_type" => "client_credentials", 
        "client_id" => $_ENV["CLIENT_ID"], 
        "client_secret" => $_ENV["CLIENT_SECRET"]
      ]
    ];
    $result = $requestAccessToken->post($_ENV['CLIENT_API_URL'], $options);

    return (string) $result->getBody();
  }
  catch(Exception $error) {
    \Drupal::logger('signup')->error("error " . $error-getMessage());
  }
}

1 Ответ

0 голосов
/ 02 марта 2020

Проблема возникла из-за того, что guzzlehttp напрямую поддерживался в drupal-8, вызвал конфликт с пакетом, установленным через composer.

После удаления библиотек composer для guzzle и использования следующей документации: https://www.drupal.org/docs/8/modules/http-client-manager/introduction

...