Online high-score list

Ok, i want my game to be able to sent info to server (or whatever its called) and read it back. I just read a few pages of Java tutorial about networking and still clueless and dont wanna read the stuff i dont need. Anyways, my question is: can i get a free database (or whatever its called) to do that? As far as i understand, u need a URL, then u need to get URLConnection and write stuff to it. Forgive me if sound completely clueless, i really really am . . . ???

Easiest way to do this is to find a free server with php and mysql support. Then you can create a mysql database on the server for storing highscores. It’s very messy and unpractical to connect to database directly from client, as you send password and database needs to be configured to allow access other than on local machine (host you selected), so best thing is to write a php script that does that for you, and with your client java app you just call that script (on standard web port, 80) with couple of parameters to pass the data about player name and score. There is a tutorial just about that, I think it’s this one, from our very own woogley :slight_smile: :
http://woogley.net/misc/Highscore/
If you don’t know php don’t worry, it’s not hard at all.

Ok, i got a database but it wont write to it.


import java.io.*;
import java.net.*;
class DataBaseTest{
	public static void main(String[] args) throws IOException{
		URL urlread = new URL("http://mlu.scorpiontek.org/index.php?action=list&access_code=6589415766584932");
		URL urlwrite = new URL("http://mlu.scorpiontek.org/index.php?action=submit&admin_user=hsadd&admin_pass=mlu4ever&name=Alexxz4&score=123456&access_code=6589415766584932 ");
		// writing to URL
		URLConnection con=urlwrite.openConnection();
		con.setDoOutput(true);
		PrintStream ps=new PrintStream(con.getOutputStream());
		ps.println("Alexxz4 123456");
		ps.close();
		// Reading from URL		
		InputStream in = urlread.openStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		String str1="";
		while((str1=br.readLine())!=null)System.out.println(str1);
		br.close();
}
}

The output is

--------------------Configuration: <Default>--------------------
test 91456564
Shawn 100000

Process completed.

Alexxz4 123456 is not there :-[

I’m not exactly how you’re writing to the URLStream…

When talking to the server, the ‘writing’ should be through either GET or POST args (GET are the ones that can be seen in the URL, POST are in the HTTP header).

I’d think Java would throw an exception there :o

Way I’m parsing this, it’s trying to write to a URL. I’m a bit rusty on HTTP’s exact format, but I was almost certain it was a one-way street :wink:

What I suggest is either adding the username and score to the GET arguements, or the POST arguements.

You could even do a simple cypher to discourage those that may want to post fake high scores.

Seeing that you already have multiple GET arguements there, I doubt I need to explain them.

I’m not sure how to do an HTTP POST with Java, but I’m sure there’s a way somewhere :slight_smile: