[英]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.