Используйте функцию php simplexml_load_file для загрузки фида gmail - PullRequest
2 голосов
/ 11 марта 2010

Мне нужно подключить свой php-скрипт к каналу Gmail Atom, чтобы получить количество непрочитанных сообщений, но у меня проблема с получением файла фида xml:

if($xmlGmailFeed = simplexml_load_file("https://USERNAME:PASSWORD@gmail.google.com/gmail/feed/atom/")) 
    $unreadMessages = $xmlGmailFeed->fullcount;

дает: не удалось загрузить внешнюю сущность как я могу это сделать? спасибо:)

Ошибка! не удалось открыть поток: HTTP-запрос не выполнен! HTTP / 1.0 401 Несанкционированный

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Да, похоже на ошибку аутентификации. Я считаю, что вы должны аутентифицироваться с помощью curl, так как simplexml_load_file не достаточно. Взгляните на класс GmAtom . Это поможет, или, по крайней мере, укажет вам правильное направление.

0 голосов
/ 11 марта 2010

сначала попробуйте выполнить file_get_contents, чтобы проверить, в порядке ли канал, и у вас включено allow_url_fopen Затем вы можете попытаться сохранить его во временном файле и передать этот путь в файл simplexml_load_file.

Если вышеописанное работает, и у вас php <5.1.0, вы можете попробовать и сделать </p>

simplexml_load_file(rawurlencode("https://USERNAME:PASSWORD@gmail.google.com/gmail/feed/atom/"))

Начиная с PHP 5.1.0 вам не нужно этого делать, потому что PHP сделает это за вас.

0 голосов
/ 11 марта 2010

Попробуйте использовать:

https://USERNAME:PASSWORD@mail.google.com/mail/feed/atom/
...