I am sending data from android to the wcf service, but getting a Bad request using HttpURLConnection.
Android Code:
`public User RegisterPost(Context context, User rUser) throws UnsupportedEncodingException{ String url = context.getResources().getString(R.string.SERVICE_URL)+ "Signup"; try { JSONObject userValue = new JSONObject(); JSONObject user = new JSONObject(); userValue.put("name", rUser.name); userValue.put("email", rUser.email); userValue.put("password", rUser.password); userValue.put("phone", rUser.phone); userValue.put("nic", rUser.nic); userValue.put("userType", rUser.userType); userValue.put("image", rUser.image); user.put("user", userValue.toString()); String response = postData(url, user); } catch(Exception ex) { ex.printStackTrace(); } return null; }`
The postData () function is in a single file.
public String postData(String urlpath, JSONObject json) { HttpURLConnection connection = null; try { URL url=new URL(urlpath); connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); OutputStreamWriter streamWriter = new OutputStreamWriter(connection.getOutputStream()); Log.d("write data",json.toString()); streamWriter.write(json.toString()); streamWriter.flush(); StringBuilder stringBuilder = new StringBuilder(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK){ InputStreamReader streamReader = new InputStreamReader(connection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(streamReader); String response = null; while ((response = bufferedReader.readLine()) != null) { stringBuilder.append(response + "\n"); } bufferedReader.close(); Log.d("HTTP_OK response", stringBuilder.toString()); return stringBuilder.toString(); } else { Log.e("else response", connection.getResponseMessage()); return null; } } catch (Exception exception){ Log.e("test", exception.toString()); return null; } finally { if (connection != null){ connection.disconnect(); } } }
json data transfer for maintenance;
{ "user": "{\"name\":\"rrr rrr\",\"email\":\" rrr@eemail.com \",\"password\":\"123\",\"phone\":\"12333333\",\"nic\":\"44444444\",\"userType\":\"Passenger\",\"image\":\"55akasdfadphpoijpiojasdfasdfasdfasdfasdfasdfasdfasdf\"}" }
here is the WCF service code;
[OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/Signup", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] bool Signup(ReturnUserData user); public bool Signup(ReturnUserData user) { user usr = new user(); usr.name = user.name; usr.email = user.email; usr.password = user.password; usr.phone = user.phone; usr.nic = user.nic; usr.userType = user.userType; usr.image = user.image; db.users.Add(usr); db.SaveChanges(); return true; } public class ReturnUserData { public string id { get; set; } public string name { get; set; } public string email { get; set; } public string password { get; set; } public string phone { get; set; } public string userType { get; set; } public string image { get; set; } }