So at work, I had to learn how to write SOAP web services in PHP, and it was coming along pretty well. So well, in fact, that I decided to tinker around with making a SOAP interface to the DCSquares high score tables.

Since I primarily use a Mac, I started out with Objective-C and Cocoa, using Apple’s CoreServices to communicate with the SOAP service, and it worked perfectly:

When you click “Get Scores”, it goes out to http://dcsquares.c99.org/SOAP/scores.php, invokes the getScores() method, and populates the pretty NSTableView with the data.

“This is great!” I thought, “A nice standardized way to get the high scores to the game client, and it works on multiple platforms!”

Except for one thing: Microsoft .NET

No matter what I do, I can’t get the Microsoft .NET framework to parse the results of my SOAP service. I’ve spent hours capturing the traffic between .NET and my web server (with tcpdump, because it’s not like MS would be nice enough to let you VIEW the XML it’s barfing on), searching google, and pulling my hair out, and I’m still stuck. So I’m giving up. .NET looks good on paper, but I’m going to continue to use C/C++ and Objective-C. The Windows client will continue to use my hacked together HTTP library to interface with the website, while the Mac client and the website itself will take advantage of the new SOAP services.