从api explorer端点android获取方法的返回值

时间:2014-07-19 11:29:32

标签: android json google-app-engine android-asynctask google-cloud-endpoints

我希望从我的android端点调用我的方法返回。

这是我的方法,测试google explorer api上的实体NewUsers中是否已有用户(当我在explorer api上测试时,该方法正常工作):

/**
 * Method to update the information about the user.
 * We don't allow to update the email.
 * @param : String email (to compare), String sexe, String age, String weight,
 * @return : JSONObject containing the response
 */
@ApiMethod(name = "greetings.userExist", httpMethod = "get", path = "jsonobject/userExist")
public JSONObject userExist(@Named("Email") String email) {

    JSONObject obj = new JSONObject();
    obj.put("Value", "false");  

    Query q = new Query ("NewUsers");
    q.addFilter("Email", Query.FilterOperator.EQUAL, email);

    PreparedQuery pq = datastore.prepare(q);        

    for (Entity entity : pq.asIterable ())
    {
        // = user already exist
        if(entity.getProperty("Email").equals(email)){
            obj.put("Value", "true");       
        }       
    }
    return obj;
}

以下是我的客户端端点android( EDITED )的代码:

// Get the jsonObject to know if the user already exist
    userExist = new AsyncTask<String, Void, JSONObject>() {

        JSONObject jsonObject;

        @Override
        protected JSONObject doInBackground(String... params) {

            // Retrieve service handle.
            Helloworld apiServiceHandle = AppConstants.getApiServiceHandle();

            try {
                // Call the api method and pass the value
                return (JSONObject) apiServiceHandle.greetings().userExist(emailUser).getJsonContent();

            } catch (IOException e) {
                Log.e("Error", e.toString());
            }

            return null;
        }

        @Override
        protected void onPostExecute(JSONObject obj) {
            Log.i("Value :",obj.toString());
            if(obj != null){
                try {
                    value = obj.getString("Value");
                    Log.i("Value :", value);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }

    };

    userExist.execute();

当我打印时,结果为null ..

如何获取所有jsonObject?

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

我建议您创建一个单独的类,而不是创建一个JsonObject,它将包含所有必需的字段。确保此类是可序列化,然后放入输出中的对象。 你会发现对象作为回应。