2016-07-27 72 views
0

请看看我的基本Android Webserver代码。 数据应该从Android智能手机应该被发送到Web服务器,Web服务器应该把数据在数据库中,然后给查询: {“query_result”:“SUCCESS”}Web服务器到Android JSON解析数据

(当我访问通过浏览器的服务器端脚本我得到这个JSON消息,数据也插入到数据库中)

问题是我的应用程序没有正确解析JSON响应,甚至没有得到任何响应?

我迄今为止代码: http://bits.works/view/466210bb

的代码显示的Android屏幕上的 “错误解析JSON数据”。

Call of method: 

//Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 

new SignupActivity(AndroidGPSTrackingActivity.this).execute(Double.toString(latitude), Double.toString(latitude), Double.toString(longitude), Double.toString(longitude), Double.toString(latitude)); 

类与方法:

public class SignupActivity extends AsyncTask<String, Void, String> { 

private Context context; 

public SignupActivity(Context context) { 
    this.context = context; 
} 

protected void onPreExecute() { 

} 

@Override 
protected String doInBackground(String... arg0) { 
    String fullName = arg0[0]; 
    String userName = arg0[1]; 
    String passWord = arg0[2]; 
    String phoneNumber = arg0[3]; 
    String emailAddress = arg0[4]; 

    String link; 
    String data; 
    BufferedReader bufferedReader; 
    String result; 

    try { 
     data = "?fullname=" + URLEncoder.encode(fullName, "UTF-8"); 
     data += "&username=" + URLEncoder.encode(userName, "UTF-8"); 
     data += "&password=" + URLEncoder.encode(passWord, "UTF-8"); 
     data += "&phonenumber=" + URLEncoder.encode(phoneNumber, "UTF-8"); 
     data += "&emailaddress=" + URLEncoder.encode(emailAddress, "UTF-8"); 

     link = "http://qqqqqtech/signup.php" + data; 
     URL url = new URL(link); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

     bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     result = bufferedReader.readLine(); 
     return result; 
    } catch (Exception e) { 
     return new String("Exception: " + e.getMessage()); 
    } 
} 

@Override 
protected void onPostExecute(String result) { 
    String jsonStr = result; 
    if (jsonStr != null) { 
     try { 
      JSONObject jsonObj = new JSONObject(jsonStr); 
      String query_result = jsonObj.getString("query_result"); 

      if (query_result.equals("SUCCESS")) { 
       Toast.makeText(context, "Data inserted.", Toast.LENGTH_SHORT).show(); 
      } else if (query_result.equals("FAILURE")) { 
       Toast.makeText(context, "Data could not be inserted.", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show(); 
     } 
    } else { 
     Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); 
    } 
} 

}

+0

你应该在这里发布你的代码。 –

回答

0

检查从doInBackground返回值行

String query_result = jsonObj.getString("query_result"); 

之前,这是因为doInBackground可能捕获的异常并返回而不是有效的回应。因此,在尝试解析它以查看它包含的内容之前,先制作ToastjsonStr

+0

保护无效onPostExecute(字符串结果){ 字符串jsonStr =结果; Toast.makeText(context,jsonStr,Toast.LENGTH_SHORT).show(); if(jsonStr!= null){... 看来jsonStr是空的。 – AndreasK