В вашем URL есть несколько ошибок, но только одна, в частности, в том, как вы их создали. Орган должен быть без каких-либо сегментов пути, к ним следует добавить путь добавления, потому что / будет закодирован, и вы получите следующий URL: https: //api.themoviedb.org%2F3%2Fmovies%2F/ 157336 / videos? Api_key = ###
Так что просто разделите эту часть на следующее:
.authority("api.themoviedb.org")
.appendPath("3")
.appendPath("movies")
Тогда есть некоторые особенности с tmdb, во-первых, вы можете только вызвать их API через https, поэтому установите это как схему:
builder.scheme("https")
Затем вы пытаетесь достичь неопределенной конечной точки, если вы посмотрите документацию в https://developers.themoviedb.org / 3 / movies / get-movie-videos вы заметите, что в настоящее время вы пытаетесь достичь
/ movies / {id} / videos
blockquote>но конечная точка находится по адресу:
/ movie / {id} / videos
blockquote>Поэтому измените:
.appendPath("movies")
с помощью .appendPath ( "movie")
теперь, если вы выйдете из своей переменной myUrl, вы должны увидеть следующий URL:
http s: //api.themoviedb.org/3/movie/157336/videos? api_key = ###
blockquote>, что является правильным.
Вы, возможно, должны сериализировать объект/переменную $st перед хранением его. Это гарантирует, что все сохраняется к сессии. Это - определенно способ пойти для объектно-ориентированного кода. Когда Вы хотите использовать данные снова, необходимо не сериализировать их.
Необходимо включать определение класса перед вызовом session_start()
, иначе объект не будет десериализован правильно и будет экземпляром __PHP_Incomplete_Class
. Иначе то, что Вы имеете, должно хорошо работать.
Если Вы собираетесь хранить объект на сессии, это должен быть текст ссылки. Существует МНОГО проблем с сериализацией объектов в PHP, уже не говоря о хранении их на сессии. Я рекомендую против выполнения этого в целом и нахождения другого решения для Вашей проблемы. Если Вы собираетесь сделать это, хотя, необходимо изучить 'волшебные методы' текст ссылки, который необходимо определить в классе для упрощения, это - переинстанцирование, когда это называют от сессии.
Это - одна из тех вещей, которые это твердо отладить в изоляции. Хранить инстанцированные объекты на Сессиях PHP всегда немного хитро, и не 100% гарантировал, что работал. Вот некоторые общие подсказки по отладке, которые могут помочь Вам понять это.
Во-первых, проверьте свой апачский журнал ошибок. Вы обращались к "методу необъектная ошибка"? Если так, это означает, что Вы не вытаскиваете объект назад из сессии. В противном случае существует ли ошибка, которая указала, что Ваш вызов метода перестал работать по другой причине?
Во-вторых, проверьте для наблюдения то, что Вы действительно выходите из своей сессии.
if($comd =="getstate") {
$st= $_SESSION['statefile'];
//get the class of st
phplog("instance=".get_class($st));
//get a reflection dump of st
$ref = new ReflectionClass($st);
$string = $ref->__toString();
phplog("reflection=".$string);
}
В-третьих, посмотрите на сериализированное строковое значение, которое хранится на самой сессии. Вы на самом деле храните сериализованный объект? В Вашей dev среде, устанавливает сессия save_path ini, оценивают в php.ini чему-то как/tmp, (или используйте ini_set метод, чтобы сделать то же самое):
session.save_path = "/tmp"
и затем исследуйте файлы, созданные в/tmp (или безотносительно папки). Необходимо видеть строку, которая запускается с:
statefile:O:..........
Название класса, который инстанцировал объекта, будет также включено там, а также значения, сохраненные к свойствам.
Вы имеете session.auto_start
включенный? Страница сессии руководства указывает, что, если Вы делаете, необходимо загрузить определение класса по-другому:
При включении сессии auto_start затем, единственный способ поместить объекты в сессии состоит в том, чтобы загрузить свое определение класса с помощью auto_prepend_file, в котором Вы еще загружаете определение класса, необходимо будет сериализировать объект и не сериализировать его впоследствии.
http://php.net/manual/en/intro.session.php
Как та страница говорит, сериализация/несериализация объекта будет обычно делаться автоматически PHP, но наличием session.auto_start
включенный изменит это.