Этот код ниже:
$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-адрес. Но сначала всегда показывает эту ошибку.
В API сказано, что загрузка файла является асинхронной операцией, а это значит, что файл может быть готов не сразу. Может из-за этого?






Это потому, что 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 сказано, что загрузка файла является асинхронной операцией, а это значит, что файл может быть готов не сразу. Я не знаю, может ли проблема быть в этом.
@John Что ты имеешь в виду, когда он показывает первым? Ответ API изменится после полной загрузки файла?
При первом обращении к странице dd ($ url) показывает эту ошибку, но при повторном обращении к странице ошибка не отображается и на странице появляется ссылка url.
Например, после этого кода "$ url = null; if (! Empty ($ response)) {$ response = json_decode ($ response); $ url = $ response-> output-> pdfUrl;}" я помещаю заголовок ("Местоположение : $ url ") ;. Но когда пользователь обращается к странице, сначала появляется сообщение «Попытка получить свойство не-объекта», но если пользователь нажимает в браузере кнопку «Обновить», файл загружается.
Похоже, что для создания файла необходимо отправить два запроса, и в первом появится сообщение «Попытка получить свойство не-объекта». Во второй переносится файл, в третьем снова появляется «Пытаюсь получить свойство не-объекта».
@John Обновил мой ответ. Используйте функцию redirect() для перенаправления пользователя, а не header(Location: $url) ..... :)
@John Я не знаю, как работает ваш остальной код. Честно говоря, просто проверьте ответ ... Если он пуст, если нет и т. д., И обработайте перенаправление таким образом. :)
Спасибо, вот так сначала появляется пустая страница, затем, когда пользователь обновляет страницу, файл загружается. Знаете ли вы, что пользователю необходимо только один раз щелкнуть по кнопке, чтобы загрузить файл?
@John Вы имеете в виду, как обеспечить, чтобы пользователь нажимал только один раз?
Пользователь делает только один запрос на скачивание файла вместо двух необходимых.
$url->output->url?