I am writing method to insert a new record to DB from android. On client (android studio), I use AsyncHttpClient POST:
JSONObject params = new JSONObject();
try {
params.put("idOrd", idOrd);
params.put("idLan", aIdLan);
params.put("dbIP", dbIP);
params.put("dbName", dbName);
params.put("dbUsername", dbUsername);
params.put("dbPassword", Utility.dbEncrypt(dbPassword));
wsEditMaster(params);
} catch (JSONException | UnsupportedEncodingException e) {
e.printStackTrace();
}
public void wsEditMaster(final JSONObject params) throws UnsupportedEncodingException {
ByteArrayEntity entity = new ByteArrayEntity(params.toString().getBytes("UTF-8"));
entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded"));
client.post(this, "http://" + serverIP + "/DHD/general/editorder", entity, "application/x-www-form-urlencoded", new AsyncHttpResponseHandler() {
And on server (eclipse):
// HTTP Post Method
@POST
// Path: http://localhost/<appln-folder-name>/general/editorder
@Path("/editorder")
// Produces JSON as response
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
// Query parameters are parameters:
public String editOrder(@FormParam("idOrd") String idOrd,
@FormParam("idLan") String idLan, @FormParam("dbIP") String dbIP,
@FormParam("dbName") String dbName,
@FormParam("dbUsername") String dbUsername,
@FormParam("dbPassword") String dbPassword) throws Exception {
String response = "";
if (DBConnection.editOrder(idOrd, idLan, dbIP, dbName, dbUsername, dbPassword)) {
response = Utility.constructJSON("editOrder", true);
} else {
response = Utility.constructJSON("editOrder", false,
"Cannot insert to database!");
}
return response;
}
Everything works fine when I use GET, but when I use POST, all params became null in "editOrder" function. Please help, thank you.
OK, I solved my problem. Simply, use RequestParams instead of JSONObject: