Запрос в Magento 2 не работает со строкой, возвращенной другим методом - PullRequest
0 голосов
/ 22 декабря 2018

У меня очень странная ошибка, которую я пытался решить несколько дней, но безуспешно.У меня есть метод getAuthorizationKey(), который получает ключ авторизации от Registry, если он существует, или отправляет запрос на вход в API для его получения (кстати, это всегда один и тот же ключ).Получив этот ключ, я могу использовать его для отправки запроса в другую конечную точку API.

Так работает мой метод getAuthorizedKey().

protected function getAuthorizationKey()
{
  if (is_null($this->_registry->registry(self::AUTH_KEY))) {
    $authKey = $this->get(
      self::LOGIN_ENDPOINT,
      [
        'username' => $this->helper->getApiUsername(),
        'password' => $this->helper->getApiPassword()
      ]
    );

    $this->_registry->register(self::AUTH_KEY, $authKey);
  }

  return $this->_registry->registry(self::AUTH_KEY);
}

Так работает мой метод getвыглядит (я не присваиваю $query['key'] дважды, я просто использую его для демонстрации).Я уже пытался зарегистрировать его значение в обеих ситуациях на каждой конечной точке.

public function get($endpoint, $query = [])
{
  if (self::LOGIN_ENDPOINT !== $endpoint) {
    $query['key'] = $this->getAuthorizationKey(); // this never works
    $query['key'] = '<KEY>' // this always works
  }

  $response = $this->request($this->helper->getApiUrl($endpoint), Request::METHOD_GET, $query);
  $responseBody = $this->jsonHelper->unserialize($response->getBody());

  return empty($responseBody) ? [] : $responseBody;
}

Теперь проблема в том, что только значение ключа жесткого кода возвращает данные из API, но когда я пытаюсь использовать ключ, которыйЯ получаю из метода getAuthorizationKey (), по какой-то причине я всегда получаю ошибку Service: Method not allowed (это API на основе ASP.NET).Я пытался сделать var_dump($this->getAuthorizationKey() === '<KEY>'), и он всегда оценивается в true.В ключе нет специальных символов, только цифры, символы и тире.

Я попытался записать результаты обоих методов, чтобы посмотреть, добавлено ли значение в Registry, и все выглядит хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...