我想從數據庫獲取信息。當我使用沒有參數的查詢(例如「Select * from users;」我的腳本工作正常Android Volley - POST參數未達到PHP腳本
現在我有下面的腳本返回一個空數組當我替換腳本中的$ groupId字符串值例如,「組1」),它返回預期項目
<?php
$sql = "";
if($_SERVER['REQUEST_METHOD']== 'POST') {
$flag = array();
$groupId = $_POST['groupId'];
require_once('dbConnect.php');
$sql = "SELECT * FROM users where groupId = '$groupId'";
if($out = mysqli_query($con,$sql)){
//echo "Successfully Registered";
while($row = mysqli_fetch_array($out))
{
$flag[] = $row;
}
print(json_encode($flag));
}else{
echo "Could not register";
}
}else{
echo 'error';
}
//mysqli_close($con);
?>
當我調用下面的函數與HashMap的hashMapGetNames.put("groupId", "Group#1");
然後我得到一個空數組和信息:「不,組ID是未設置「
public ArrayList<String> get(String url, final HashMap<String, String> hashMap, final Context context) {
//Download the items from DB
final ArrayList<String> items = new ArrayList<>();
RequestQueue queue = Volley.newRequestQueue(context);
JSONObject parameters = new JSONObject(hashMap);
final JsonRequest<JSONArray> jsonArrayRequest = new
JsonRequest<JSONArray>(Request.Method.GET, url, parameters.toString(),
new com.android.volley.Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {
if(jsonArray == null){
Log.d("Downloader", "FAIL: NO NAMES FOUND");
}
else {
for (int zähler = 0; zähler < jsonArray.length(); zähler++){
try {
Log.d("Downloader", "sind bei zähler " + zähler);
JSONObject object = jsonArray.getJSONObject(zähler);
String name = object.getString("name");
Log.d("Name", name);
items.add(name);
}
catch (JSONException e) {
Log.d("Downloader", "Catching exception");
e.printStackTrace();
}
}
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Downloader", "Error: " + error.toString());
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Log.d("Downloader", "gettingParams");
return hashMap;
}
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
Log.d("Downloader", "parsing Network response");
try {
String jsonString = new String(response.data,
HttpHeaderParser
.parseCharset(response.headers));
Log.d("Downloader", "Parsing success");
return Response.success(new JSONArray(jsonString),
HttpHeaderParser
.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
Log.d("Downloader", e.toString());
return Response.error(new ParseError(e));
} catch (JSONException je) {
Log.d("Downloader", je.toString());
return Response.error(new ParseError(je));
}
}
};
queue.add(jsonArrayRequest);
return items;
}
因此腳本似乎是正確的,但參數沒有達到腳本。任何錯誤可能隱藏的想法?
編輯:我編輯了代碼,如下面教程中所示的代碼所示,並使用相同的dbConnect.php文件。但它會打印出錯誤 - 所以問題仍然存在。這意味着請求方法不是「Post」。 Android的監控打印出:
parsing Network response
Downloader: Parsing success
Error: com.android.volley.ParseError: org.json.JSONException: End of input at character 0
THX你的答案。我將「122」改爲「Zehn」,這是一個應該返回一些項目的值。 - >結果:清空ArrayList。但是當我直接用「Zehn」替換PHP腳本中的groupId時,我得到了一些項目。 – uwieuwe4
使用此依賴性compile'com.mcxiaoke.volley:library-aar:1.0.0'如果不起作用。你可能做錯了什麼。 –
謝謝。它清楚地看到我做錯了什麼。但我不知道它可能是什麼 – uwieuwe4