Получить URL-адрес из ответа с жужжанием не работает

Этот код ниже:

$url = json_decode($getClient->getBody()->getContents());
dd($url);

показывает:

{#302 ▼
  +"output": {#304 ▼
    +"url": "https://...▶"
  }
}

Я хочу сохранить URL-адрес в переменной, но с $urlLink = $url['url']; он показывает ошибку:

Cannot use object of type stdClass as array

Но с $urlLink = $url->url; показывает еще и ошибку:

Undefined property: stdClass::$url

Ты знаешь почему?

$url->output->url?
Tim Lewis 22.06.2018 21:04

Спасибо, вроде то, что сначала появляется "Пытаться получить свойство не-объекта". Но затем он показывает URL-адрес. Но сначала всегда показывает эту ошибку.

user9977616 22.06.2018 21:16

В API сказано, что загрузка файла является асинхронной операцией, а это значит, что файл может быть готов не сразу. Может из-за этого?

user9977616 22.06.2018 21:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
759
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что url находится внутри объекта output.

$response = $getClient->getBody()->getContents();

$url = null;
if (!empty($response)) {
  $response = json_decode($response);

  $url = !empty($response->output->url) ?: $response->output->url : '';
}

// Handle the redirection this way.
// If $url == null then that means no response from API.
// If $url == '' then the file hasn't been completely uploaded.

Вот как это должно быть сделано.

Спасибо, вроде то, что сначала появляется "Пытаться получить свойство не-объекта". Но затем, если страница открывается снова, она показывает URL-адрес. Но сначала всегда показывает эту ошибку. В API сказано, что загрузка файла является асинхронной операцией, а это значит, что файл может быть готов не сразу. Я не знаю, может ли проблема быть в этом.

user9977616 22.06.2018 21:22

@John Что ты имеешь в виду, когда он показывает первым? Ответ API изменится после полной загрузки файла?

prateekkathal 22.06.2018 21:24

При первом обращении к странице dd ($ url) показывает эту ошибку, но при повторном обращении к странице ошибка не отображается и на странице появляется ссылка url.

user9977616 22.06.2018 21:25

Например, после этого кода "$ url = null; if (! Empty ($ response)) {$ response = json_decode ($ response); $ url = $ response-> output-> pdfUrl;}" я помещаю заголовок ("Местоположение : $ url ") ;. Но когда пользователь обращается к странице, сначала появляется сообщение «Попытка получить свойство не-объекта», но если пользователь нажимает в браузере кнопку «Обновить», файл загружается.

user9977616 22.06.2018 21:27

Похоже, что для создания файла необходимо отправить два запроса, и в первом появится сообщение «Попытка получить свойство не-объекта». Во второй переносится файл, в третьем снова появляется «Пытаюсь получить свойство не-объекта».

user9977616 22.06.2018 21:31

@John Обновил мой ответ. Используйте функцию redirect() для перенаправления пользователя, а не header(Location: $url) ..... :)

prateekkathal 22.06.2018 21:31

@John Я не знаю, как работает ваш остальной код. Честно говоря, просто проверьте ответ ... Если он пуст, если нет и т. д., И обработайте перенаправление таким образом. :)

prateekkathal 22.06.2018 21:33

Спасибо, вот так сначала появляется пустая страница, затем, когда пользователь обновляет страницу, файл загружается. Знаете ли вы, что пользователю необходимо только один раз щелкнуть по кнопке, чтобы загрузить файл?

user9977616 22.06.2018 21:35

@John Вы имеете в виду, как обеспечить, чтобы пользователь нажимал только один раз?

prateekkathal 23.06.2018 05:03

Пользователь делает только один запрос на скачивание файла вместо двух необходимых.

user9977616 23.06.2018 12:36

Другие вопросы по теме