?

Log in

No account? Create an account
Extremely new to this. - LiveJournal Client Discussions — LiveJournal [entries|archive|friends|userinfo]
LiveJournal Client Discussions

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Extremely new to this. [Sep. 25th, 2004|07:39 pm]
LiveJournal Client Discussions

lj_clients

[4abudabit]
So I just started trying to use XML-RPC with LJ today, and this also will be my first time using sockets. My website is PHP based. Anyways, I coded this crappy little attempt to post a message but it doesn't work (which I expected). Could someone help me get started? Here is what I came up with:



$xmlrpc_message = "[?xml version='1.0'?]\n
[methodCall]\n
[methodName]LJ.XMLRPC.postevent[/methodName]\n
[params]\n
[param]\n
\n
[value][struct]\n
[member][name]4abudabit[/name]\n
[value][string]test[/string][/value]\n
[/member]\n
[member][name]password[/name]\n
\n
[value][string]test[/string][/value]\n
[/member]\n
[member][name]event[/name]\n
[value][string]This is a test post.\n
[/string][/value]\n
\n
[/member]\n
[member][name]subject[/name]\n
[value][string]Test[/string][/value]\n
[/member]\n
[member][name]lineendings[/name]\n

[value][string]pc[/string][/value]\n
[/member]\n
[member][name]year[/name]\n
[value][int]2002[/int][/value]\n
\n
[/member]\n
[member][name]mon[/name]\n
[value][int]7[/int][/value]\n
[/member]\n
[member][name]day[/name]\n
\n
[value][int]13[/int][/value]\n
[/member]\n
[member][name]hour[/name]\n
[value][int]20[/int][/value]\n
\n
[/member]\n
[member][name]min[/name]\n
[value][int]35[/int][/value]\n
[/member]\n
[/struct][/value]\n
\n
[/param]\n
[/params]\n
[/methodCall]";

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (socket_connect($socket, "66.150.15.140", 80)) echo "Socket connected?[BR]";


$len = strlen($xmlrpc_message);
$reply = socket_send($socket, $xmlrpc_message, $len, 0x100);
echo $reply;
socket_close($socket);

_______________________

All the ['s are of course greater and less than signs in the real code. What are some of the many problems with this attempt? Thank you.
linkReply

Comments:
[User Picture]From: 4abudabit
2004-09-26 04:25 pm (UTC)
Thank you so much for the help. :J) I don't get the error response any more. Although now it takes about 60 for my test script to complete and it doesn't return anything from the server. It does give me the length of the data sent though so I know it was successfully sent.

$xmlrpc_message3 = 'POST /interface/xmlrpc HTTP/1.0
User-Agent: AtomicDen Test Client
Host: www.livejournal.com
Content-Type: text/xml
Content-Length: 193

[?xml version="1.0"?]
[methodCall]
[methodName]LJ.XMLRPC.getchallenge[/methodName]
[params]
[param]

[/param]
[/params]
[/methodCall]';

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (socket_connect($socket, "66.150.15.150", 80)) echo "Socket connected?[BR]";

$len = strlen($xmlrpc_message3);
$length = socket_write($socket, $xmlrpc_message3, $len);
echo $length;
$reply = socket_read($socket, 1000);
echo $reply, "[BR]_______[BR]";
echo $reply-]fullname;
socket_close($socket);
(Reply) (Parent) (Thread)
[User Picture]From: hyuri
2004-09-26 05:39 pm (UTC)
The Content-Length headers in the examples are quite inaccurate. Assuming that you’re using Windows line‑endings (\r\n, 2 characters), the actual Content-Length value is 141.

Also, despite what the CSP docs show, an empty param element is incorrect here and must be removed, reducing the Content-Length to 119—and since getchallenge has no params, the params element can be disposed of as well, leaving the following:
$xmlrpc_message3 = 'POST /interface/xmlrpc HTTP/1.0
User-Agent: AtomicDen Test Client
Host: www.livejournal.com
Content-Type: text/xml
Content-Length: 99

<?xml version="1.0"?>
<methodCall>
<methodName>LJ.XMLRPC.getchallenge</methodName>
</methodCall>';

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (socket_connect($socket, "66.150.15.150", 80)) echo "Socket connected?<BR>";

$len = strlen($xmlrpc_message3);
$length = socket_write($socket, $xmlrpc_message3, $len);
echo $length;
$reply = socket_read($socket, 1000);
echo $reply, "<BR>_______<BR>";
echo $reply->fullname;
socket_close($socket);

As a final note: you should be using test.livejournal.org as your test server, not www.livejournal.com.
(Reply) (Parent) (Thread)
[User Picture]From: 4abudabit
2004-09-26 09:32 pm (UTC)
It worked!!!!

Thank you thank you thank you thank you. You've probably saved me from at least a couple days of work and at least 4 headaches. :J)
(Reply) (Parent) (Thread)
[User Picture]From: 4abudabit
2004-09-27 08:58 pm (UTC)
I thought I had it figured out, but when I try login I don't get a response either:

POST /interface/xmlrpc HTTP/1.0
User-Agent: AtomicDen Test Client 1.0
Host: test.livejournal.org
Content-Type: text/xml
Content-Length: 405

[?xml version="1.0"?]
[methodCall]
[methodName]LJ.XMLRPC.login[/methodName]
[params]
[param]

[value][struct]
[member][name]username[/name]
[value][string]4abudabit[/string][/value]
[/member]

[member][name]password[/name]
[value][string]MYPASS[/string][/value]
[/member]
[member][name]ver[/name]
[value][int]0[/int][/value]
[/member]
[/struct][/value]
[/param]
[/params]
[/methodCall]
(Reply) (Parent) (Thread)