LINUX.ORG.RU

livejournal xmlrpc + curl


0

0

Привет всем.

Пытаюсь разобраться в азах веб-программирования, дошел до curl и решил поиграться с каким-нибудь API. В голову пришел известный сервис ЖЖ, с которым можно общаться по протоколу XML-RPC. В частности,есть такая функция - достать список последних записей у пользователя (с известным паролем, конечно). Называется она сокращенно «getevents». В мануале дан небольшой пример типичной сессии с использованием данной функции (http://www.livejournal.com/doc/server/ljp.csp.xml-rpc.getevents.html).

Недолго думая, я взял указанный в примере код XML, исправил его на свой запрос и воспользовался следующей командой (надо послать POST-запрос; здесь она с пробелами кое-где, в настоящей команде их нет; запрос тупо скопирован из примера, там его читабельность лучше):

curl -d «<?xml version=„1.0“ encoding=„UTF-8“?><methodCal l><methodName>LJ.XMLRPC.getevents</methodName><params><param><value><struct><mem ber><name>username</name><value><string>XXXXXX</string></value></member><membe r><name>password</name><value><string>YYYYYY</string></value></member><member> <name>ver</name><value><int>1</int></value></member><member><name>truncate</name

<value><int>20</int></value></member><member><name>selecttype</name><value><str

ing>lastn</string></value></member><member><name>howmany</name><value><int>2</in t></value></member><member><name>noprops</name><value><boolean>1</boolean></valu e></member><member><name>lineendings</name><value><string>unix</string></value>< /member></struct></value></param></params></methodCall>» -H «Content-Type: text/ xml» http://www.livejournal.com/interface/xmlrpc

На что сервер выдает:

<?xml version=«1.0» encoding=«UTF-8»?><methodResponse><fault><value><struct><mem ber><name>faultString</name><value><string>Application failed during request des erialization: XML declaration not well-formed at line 1, column 14, byte 14 at /usr/lib/perl5/ XML/Parser.pm line 187 </string></value></member><member><name>faultCode</name><value><string>Client</s tring></value></member></struct></value></fault></methodResponse>

Как я ни крутил эту команду, добиться желаемого списка записей в консоли у меня не получается :( Ругается на неправильно оформленный заголовок XML в запросе (?). Но оформлен вроде правильно... Если кто-то пробовал, подскажите, в чем тут дело может быть, а то я отчаялся.

---

Еще вопрос к знатокам: правильно ли я понимаю, что с помощью curl, в принципе, можно пообщаться с любым сервисом и постить видео, скажем, на YouTube? Похоже, большинство скриптов использует curl/libcurl для подобных целей?

о, кажись, понял... там двойные кавычки 8(

jet_bird ()

все заработало, всем спасибо :))) интересует последняя часть вопроса %)

jet_bird ()

>Еще вопрос к знатокам: правильно ли я понимаю, что с помощью curl, в принципе, можно пообщаться с любым сервисом и постить видео, скажем, на YouTube? Похоже, большинство скриптов использует curl/libcurl для подобных целей?

Да. Или не curl, а какую-нибудь другую библиотеку для используемого языка, например urllib2 для питона. Суть всё равно одна, надо повозиться с cookies (иногда достаточно нетривиально), чтобы сымитировать залогиненного пользователя, далее просто post посылать на нужные урлы.

В зависимости от сложности сервиса (ajax-ы всякие и прочее) это может быть достаточно хитро.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.