A C# LINQish RPC call to LJ

Nov 15, 2010 16:55

I put together some C# XDocument code to call LJ via RPC.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Net;
using System.IO;

namespace SendMessageTOLJ
{
class SendIt
{
static void Main(string[] args)
{
while (true)
{
XDocument xd = new XDocument();
xd.Add(new XElement("methodCall",
new XElement("methodName", "LJ.XMLRPC.sendmessage"),
new XElement("params",
new XElement("param",
new XElement("value",
new XElement("struct",
new XElement("member",
new XElement("name", "username"),
new XElement("value", new XElement("string", "mcfnord"))),
new XElement("member",
new XElement("name", "password"),
new XElement("value", new XElement("string", "mypass"))),
new XElement("member",
new XElement("name", "subject"),
new XElement("value", new XElement("string", "whatever"))),
new XElement("member",
new XElement("name", "body"),
new XElement("value", new XElement("string", "http://ljmindmap.com/"))),
new XElement("member",
new XElement("name", "to"),
new XElement("value", new XElement("string", "brad")))))))));

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes("" + xd.ToString());
xd = null;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.livejournal.com/interface/xmlrpc");
request.UserAgent = "http://ljmindmap.com/; livejournal.mindmap.jrd@xoxy.net";
request.Method = "POST";
request.ContentType = "text/xml"; // "application/x-www-form-urlencoded";
request.ContentLength = data.GetLength(0);

Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.GetLength(0));
newStream.Close();

WebResponse response = null;
response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s);
string fd = sr.ReadToEnd();
Console.WriteLine(fd);
System.Diagnostics.Debug.Assert(false == fd.Contains("ault"));
}
}
}
}


client, client: c#, client: xmlrpc

Previous post Next post
Up