2017-07-16 69 views
0
public class Config { 
    public static final String DATA_URL = "http://192.168.1.2/retrieveone.php?id="; 
    public static final String KEY_NAME = "BusinessName"; 
    public static final String KEY_AmountTotal = "AmountTotal"; 
    public static final String KEY_RT = "RequiredTotal"; 
    public static final String KEY_MT = "MaxTotal"; 
    public static final String JSON_ARRAY = "result"; 
} 

这是我的班级文件。为什么我的数据不出来?

private void getData(){ 
     String id = TempItem.toString().trim(); 
     if (id.equals("")) { 
      Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show(); 
      return; 
     } 


     String url = Config.DATA_URL+TempItem.toString().trim(); 

     StringRequest stringRequest = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 

       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(KPDetails.this,error.toString(),Toast.LENGTH_LONG).show(); 
         error.printStackTrace(); 
        } 
       }); 
     int socketTimeout =50000;//5 seconds - change to what you want 
     RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
     stringRequest.setRetryPolicy(policy); 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 
private void showJSON(String response){ 
     String name=""; 
     String AmountTotal=""; 
     String RequiredTotal = ""; 
     String MaxTotal = ""; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
      JSONObject stallsData = result.getJSONObject(0); 
      name = stallsData.getString(Config.KEY_NAME); 
      AmountTotal = stallsData.getString(Config.KEY_AmountTotal); 
      MaxTotal = stallsData.getString(Config.KEY_MT); 
      RequiredTotal = stallsData.getString(Config.KEY_RT); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     Stall.setText("Name:\t"+name+"\nAmountTotal:\t" +AmountTotal+ "\nMaxTotal:\t"+ MaxTotal); 
    } 

这是我的构造从MySQL daatabase获取数据。然而,我设法得到了setText,但没有在配置中的字符串的值。

这是我的php文件。

?php 


if($_SERVER['REQUEST_METHOD']=='GET'){ 

$id = $_GET['id']; 

require_once('conn.php'); 

$sql = "SELECT * FROM business WHERE BusinessID='".$id."'"; 

$r = mysqli_query($conn,$sql); 

$res = mysqli_fetch_array($r); 

$result = array(); 

array_push($result,array(
"BusinessName"=>$res['BusinessName'], 
"AmountTotal"=>$res['AmountTotal'], 
"RequiredTotal"=>$res['RequiredTotal'], 
"MaxTotal"=>$res['MaxTotal'] 
) 
); 

echo json_encode(array("result"=>$result)); 

mysqli_close($conn); 

} 

http://localhost/retrieveone.php?id=1”工作完全正常,但价值只是没有在我的setText显示出来。 我是Android Studio的初学者。任何帮助表示赞赏。提前致谢。

编辑:

这是我的错误。无法将java.lang.String类型的值连接转换为JSONObject

+0

你能显示你的JSONObject的输出吗? –

+0

@ Mahdi.Pishguy你指责错了我不是谁发布的问题:) –

+0

@HahaHehe你解析的JSON不正确请在'e后添加'Log.e(“error”,e.getMessage())''并且再次运行应用程序以查看Logcat上发生的情况 –

回答

0

首先用响应文本声明一个json数组,然后创建一个JSONObject。 试试这个..

try { 
     JSONArray result = new JSONArray(response); 
     JSONObject stallsData = result.getJSONObject(0); 
     name = stallsData.getString(Config.KEY_NAME); 
     AmountTotal = stallsData.getString(Config.KEY_AmountTotal); 
     MaxTotal = stallsData.getString(Config.KEY_MT); 
     RequiredTotal = stallsData.getString(Config.KEY_RT); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
0

你导入/包括类“配置”文件,对其进行访问之前?

请将您的代码放入try/catch块并输出异常以获取更多信息。

+0

类型为java.lang的值连接。字符串不能转换为JSONObject – HahaHehe

+0

原因是在编写字符串'响应'时添加了一些不想要的字符。请正确格式化。可以输出响应字符串?将有帮助 –

+0

我该如何做到这一点?我是Android Studio的初学者,不知道如何输出响应字符串。在此先感谢 – HahaHehe

相关问题