LiveJournal Protocol body<= do not need to know any of this, and are probably better off not knowing it.   ;) p?>
  1. Open a socket to www.livejournal.com on port 80
  2. Send an HTTP POST request, containing the request variables (mode, user, password, etc...)
  3. Read the socket to get the response. The response is really easy to parse.
  4. Close the socket. Do any approriate action based on the server's response.
As you can pretty easily see, the variables TO the webserver are encoded in the form var1=val1&var2=val2&..... Note that you must quote all values or the values can interfere with the encoding form. For example, what if somebody's password was "blah&=2+&something=yeah". It's an ugly password, sure, but somebody may have it. And if they do, it'll mess up the pretty format of the encoding format. So, here are the rules on how to encode values: So, for example, the phrase "I'm going to the mall" could encoded as "I%27m+going+to+the+mall". There should be CGI libraries for all major languages which do this encoding for you. If not, it isn't that hard to do it yourself. Content-length field, as in the example above. Then send a blank line, then the big long ugly string. p?> Note about line endings: Please note that the end of lines should be a carriage return (ASCII 13, 0x0D) and then a newline (ASCII 10, 0x0A). In Perl, C/C++ or Java this is "\r\n". In Basic, this is Chr(13) & Chr(10). Sending just the newline may work too, but it's generally better to send both. p?> HTTP/1.1 200 OK Date: Sat, 23 Oct 1999 21:32:35 GMT Server: Apache/1.3.4 (Unix) Connection: close Content-Type: text/plain name Mr. Test Account success OK message Hello Test Account! The top stuff is headers from the HTTP request. There may be a lot of other stuff in there too. First thing to do is make sure the first lines ends with "200 OK". If the first line does not end with 200 OK, tell the user that an error occured on the server and that it's not their fault. If you see 200 OK at the end, proceed with parsing the output. The format is as follows: The ordering of the variable/value pairs does not matter. As you read them in, read them into a hash structure. (associative array, dictionary, collection... whatever it's called in your language. Just a data structure that links one string variable key to another string variable value.) p?>

Protocol Mode Documentation
very easy. Give the user a checkbox if they want to use a proxy or not, and if so, ask the proxy host and proxy port. Now, if they selected to use a proxy, do not connect to www.livejournal.com and port 80, but instead connect to their proxy host on whatever proxy port they specified. The rest is basically the same, except for one difference. Instead of doing:

You would do...

That's it! That line tells the proxy what host it needs to connect to in order to make the real request. The rest of the HTTP you should leave just as you did before. This should be all you need to know to make a LiveJournal client. p?> community, where all the client authors hang out. p?> <=body page?>