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数据库获取数据的构造函数。但是,我设法得到了setText,但没有得到config中字符串的值。
这是我的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 :(得分: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();
}
答案 1 :(得分:0)
在访问之前,您是否导入/包含了“Config”类文件?
请将您的代码放在try / catch块中并输出异常以获取更多信息。