簡體   English   中英

從android中的php后端獲取JSON響應

[英]Get JSON response from php backend in android

我正在向php服務器發送一些數據並執行一些database操作,並在數據庫中insert操作后向 android 應用程序返回一個json數據

數據庫處理成功,但我無法在 android 中獲得 json 響應! 我在下面的代碼中使用 AsyncTask。

try {
            //connect to php and send data code...

            HttpResponse response = httpclient.execute(httppost);
            InputStream inputStream = response.getEntity().getContent();
            String result = convertInputStreamToString(inputStream);

            if (result != null) {
                try {

                    JSONObject json = new JSONObject(result);
                    Log.i("json", json.getString("insert_sucss"));
                    if (json.has("insert_err")) {
                        Toast.makeText(RegisterActivity.this, json.getString("insert_err"), Toast.LENGTH_LONG).show();
                    }
                    if (json.has("insert_sucss")) {
                        Toast.makeText(RegisterActivity.this, json.getString("insert_sucss"), Toast.LENGTH_LONG).show();
                    }
                }
                catch (JSONException e)
                {
                    e.printStackTrace();
                }

            }
        }
        catch (Exception e)
        {
            Log.e("log_tag", "Error:  " + e.toString());
        }
        return null;
    }


    private String convertInputStreamToString(InputStream inputStream) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder builder = new StringBuilder();

            String line = "";

            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }

            return builder.toString();
        }
        catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

如果未找到鍵,getString() 方法將引發異常。 而是使用 has() 方法。

刪除日志語句Log.i("json", json.getString("insert_sucss")); 或更改為json.has("insert_sucss")

此外,如果您只發送 2 個錯誤代碼(insert_sucss 和 insert_err),請將 if 條件更改為這樣的

if (json.has("insert_err")) 
{
      Toast.makeText(RegisterActivity.this, json.getString("insert_err"), Toast.LENGTH_LONG).show();
}
else 
{
      Toast.makeText(RegisterActivity.this, json.getString("insert_sucss"), Toast.LENGTH_LONG).show();
}

否則涵蓋所有這樣的可能性

if (json.has("insert_err")) 
{
      Toast.makeText(RegisterActivity.this, json.getString("insert_err"), Toast.LENGTH_LONG).show();
}
else if(json.has("insert_sucss"))
{
      Toast.makeText(RegisterActivity.this, json.getString("insert_sucss"), Toast.LENGTH_LONG).show();
}
else
{
      Toast.makeText(RegisterActivity.this, "Unexpected Error", Toast.LENGTH_LONG).show();
}

我發現了這個問題,我是從工作線程調用它的。這是錯誤的

我修復了我的代碼

 runOnUiThread(new Runnable() {

                            public void run() {
                                Toast.makeText(G.context, "text", Toast.LENGTH_LONG).show();
                            }
                        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM