2016-12-22 3 views
1

Я пишу метод для вставки новой записи в БД из Android. На клиенте (Android студия), я использую AsyncHttpClient POST:AsyncHttpClient POST params становятся нулевыми на сервере

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() { 

А на сервере (затмение):

// 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; 
} 

Все отлично работает, когда я использую GET, но когда я использую POST, все Params стал нулевым в функции editOrder. Пожалуйста, помогите, спасибо.

+0

Когда я тестирую его на Chrome с помощью расширенного клиента REST, он работал. Поэтому я думаю, что на «client.post ....» на андроиде что-то не так, но точно не знаю, что это такое. – Jacky

ответ

0

ОК, я решил свою проблему. Просто используйте RequestParams вместо JSONObject:

public void wsEditMaster(final RequestParams params) { 
     client.post("http://" + serverIP + "/DHD/general/editorder", params, new AsyncHttpResponseHandler() { 
Смежные вопросы