I'm using compact framework/C# on windows mobile.
In my application I am uploading data to the server by serializing objects and using a HttpWebRequest/POST request to send the information up. On the server the post data is de-serialised and saved to the db.
The other day I realised that I had a problem with special characters in the post data (ampersands etc..). So I introduced Uri.EscapeDataString() into the method and all was well.
However, today I have discovered that there is a problem when the application attempts to upload a large amount of data (I'm unsure of what exactly denotes "large" at the moment!)
Existing code (Kind of)
var uploadData = new List<Things>();
uploadData.Add(new Thing() { Name = "Test 01" });
uploadData.Add(new Thing() { Name = "Test 02" });
uploadData.Add(new Thing() { Name = "Test with an & Ampersand " }); // Do this a lot!!
var postData = "uploadData=" + Uri.EscapeDataString(JsonConvert.SerializeObject(uploadData, new IsoDateTimeConverter()));
Problem
The call to Uri.EscapeDataString() is causing the following exception:
System.UriFormatException: Invalid URI: The Uri string is too long.
Question
Are there any other ways to prepare the data for upload?
As far as I can see HttpUtility (which has its own Encode/Decode methods) is not available for the compact framework.
EscapeDataString()
seems mostly convinience... do a normalString.Replace
based on a library of characters that need to be escaped? – Corneous