Arhn - архитектура программирования

Ошибка Neo4j PHP Graphaware «400 Bad Content-Type header»

Следующий тестовый пример (при условии правильного пароля)

<?php
    require_once "vendor/autoload.php";
    use GraphAware\Neo4j\Client\ClientBuilder;
    $client = ClientBuilder :: create() -> addConnection("default", "http://neo4j:Password@localhost:7474") -> build();
    $query  = "MATCH (u:User)
               RETURN u";
    $result = $client -> run($query);
    $user = $result -> firstRecord() -> values()[0];
?>

дает мне следующую ошибку:

PHP Fatal error:  Uncaught GuzzleHttp\\Exception\\ClientException: Client error: `POST http://neo4j:***@localhost:7474/db/data/transaction/commit` resulted in a `400 Bad Content-Type header value: ''` response in /var/www/html/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
Stack trace:
#0 /var/www/html/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response))
#1 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Response))
#2 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), Array)
#3 /var/www/html/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()
#4 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\\Promise\\TaskQueue->run(true)
#5 /var/www/html/vendor/guzzlehttp/ in /var/www/html/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113, referer: http://localhost/

Это $client, когда я его var_dump:

object(GraphAware\Neo4j\Client\Client)#7 (2) {
  ["connectionManager":protected]=>
  object(GraphAware\Neo4j\Client\Connection\ConnectionManager)#2 (2) {
    ["connections":"GraphAware\Neo4j\Client\Connection\ConnectionManager":private]=>
    array(1) {
      ["default"]=>
      object(GraphAware\Neo4j\Client\Connection\Connection)#4 (5) {
        ["alias":"GraphAware\Neo4j\Client\Connection\Connection":private]=>
        string(7) "default"
        ["uri":"GraphAware\Neo4j\Client\Connection\Connection":private]=>
        string(38) "http://neo4j:Password@localhost:7474"
        ["driver":"GraphAware\Neo4j\Client\Connection\Connection":private]=>
        object(GraphAware\Neo4j\Client\HttpDriver\Driver)#6 (2) {
          ["uri":protected]=>
          string(38) "http://neo4j:Password@localhost:7474"
          ["config":protected]=>
          object(GraphAware\Neo4j\Client\HttpDriver\Configuration)#5 (1) {
            ["timeout":protected]=>
            int(5)
          }
        }
        ["session":"GraphAware\Neo4j\Client\Connection\Connection":private]=>
        NULL
        ["timeout":"GraphAware\Neo4j\Client\Connection\Connection":private]=>
        int(5)
      }
    }
    ["master":"GraphAware\Neo4j\Client\Connection\ConnectionManager":private]=>
    NULL
  }
  ["eventDispatcher":protected]=>
  object(Symfony\Component\EventDispatcher\EventDispatcher)#8 (2) {
    ["listeners":"Symfony\Component\EventDispatcher\EventDispatcher":private]=>
    array(0) {
    }
    ["sorted":"Symfony\Component\EventDispatcher\EventDispatcher":private]=>
    array(0) {
    }
  }
}

Я не знаю, как это интерпретировать или что не так.

  • Моя база данных работает правильно в клиенте браузера neo4j.

  • Насколько я знаю, graphaware установлен должным образом, в соответствии с инструкциями на веб-сайте.

  • Я проверил, и ошибка возникает в момент выполнения запроса, а не в момент создания клиента (хотя ошибка явно не указывает на это).

  • Если я скопирую/вставлю запрос непосредственно в клиент браузера neo4j, он будет работать, как и ожидалось.

Любая идея, почему я получаю эту ошибку?

29.08.2018

  • Можете ли вы var_dump $client? Также вы пытались обновить или откатить свою версию guzzle? 04.09.2018
  • какой тип контента вы ожидаете? установить заголовок 05.09.2018
  • @luminoslty спасибо, я добавил информацию о var_dump 05.09.2018
  • @StephanosPapastylianou Является ли фактическим URL-адресом, по которому вы пытаетесь попасть на локальный хост? Если да, то пытались ли вы заменить localhost на 127.0.0.1? 06.09.2018
  • @luminoslty Да, фактический URL-адрес - локальный, и, к сожалению, 127.0.0.1 тоже не работает ... 06.09.2018
  • содержит ли ваш пароль специальные символы (например, @, /, :, ..)? 07.09.2018
  • @logisima Не просто буквы 08.09.2018

Ответы:


1

Согласно GraphAware PHP Client, вы не используете последнюю версию, поэтому вы необходимо обновить, ИЛИ вы столкнулись с ошибкой пустого массива (например, ваша проблема в том, что вы не отправляете Content-Type:application/json, который, по-видимому, устанавливается только с помощью функции prepareRequest в GraphAware\Neo4j\Client\HttpDriver\Session). Также посмотрите на синтаксис вашего запроса, поскольку он кажется устаревшим в инструкциях по установке и в документация разработчика для Neo4j.

09.09.2018

2

Я столкнулся с той же проблемой, в моем случае решение заключалось в том, чтобы понизить версию PHP с 7.1 до 7.0. Это тоже должно помочь Вам.

30.10.2018

3

Установите модуль php-curl и попробуйте, он должен работать.

Обсуждается здесь: https://github.com/graphaware/neo4j-php-client/issues/142#issuecomment-558857861

05.12.2019
  • Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавьте контекст вокруг ссылки, чтобы другие пользователи иметь некоторое представление о том, что это такое и почему оно там, а затем процитировать наиболее релевантную часть страницы, на которую вы ссылаетесь, в случае, если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены. 05.12.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..