2016-12-22 8 views
1

アンドロイドからDBに新しいレコードを挿入する方法を書いています。クライアント(アンドロイドスタジオ)で は、私がAsyncHttpClient POSTを使用します。AsyncHttpClient POSTパラメータがサーバ上でnullになる

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

、サーバー上(日食):私はGETを使用する場合

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

をすべてが正常に動作しますが、私はPOSTを使用する場合、すべてのparamsは「editOrder」関数ではnullになりました。 お手数ですが、ありがとうございます。

+0

Chromeで高度なRESTクライアントでテストするとうまくいきました。ですから、アンドロイドの "client.post ...."には何か間違っていると思いますが、それが何であるか正確にはわかりません。 – Jacky

答えて

0

OK、私は私の問題を解決しました。単に、JSONObjectではなくRequestParamsを使用してください:

public void wsEditMaster(final RequestParams params) { 
     client.post("http://" + serverIP + "/DHD/general/editorder", params, new AsyncHttpResponseHandler() { 
関連する問題