My code works (yeah!) which sends json to a server.. would appreciate any thoughts on refactoring
1) My C# code sends this json to the server
{\’firstName\’:\’Bill\’,\’lastName\’:\’Gates\’,\’email\’:\’asdf@hotmail.com\’,\’deviceUUID\’:\’abcdefghijklmnopqrstuvwxyz\’}
Which I have to get rid of the slashes on the server side….not good.
2) I’m using application/x-www-form-urlencoded and probably want to be using application/json
Person p = new Person(); p.firstName = 'Bill'; p.lastName = 'Gates'; p.email = 'asdf@hotmail.com'; p.deviceUUID = 'abcdefghijklmnopqrstuvwxyz'; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUri + 'newuser.php'); request.Method = 'POST'; request.ContentType = 'application/x-www-form-urlencoded'; //TODO request.ContentType = 'application/json'; JavaScriptSerializer serializer = new JavaScriptSerializer(); string s = serializer.Serialize(p); textBox3.Text = s; string postData = 'json=' + HttpUtility.UrlEncode(s); byte[] byteArray = Encoding.ASCII.GetBytes(postData); request.ContentLength = byteArray.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close (); WebResponse response = request.GetResponse(); //textBox4.Text = (((HttpWebResponse)response).StatusDescription); dataStream = response.GetResponseStream (); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd (); textBox4.Text += responseFromServer; reader.Close (); dataStream.Close (); response.Close ();
PHP Code on Server:
$inbound = $_POST['json']; // this strips out the \ $stripped = stripslashes($inbound); $json_object = json_decode($stripped); echo $json_object->{'firstName'}; echo $json_object->{'lastName'}; echo $json_object->{'email'}; echo $json_object->{'deviceUUID'};
Are you sure you have those slashes in there? That’s the debugger view which C# encodes the string for display, but the real values coming out of JavaScriptSerializer don’t have any slashes in the identifier. The only thing that gets escaped is the JSON value content…