我正在使用volley連接到亞馬遜數據庫並在「ON」和「OFF」之間更改表中的特定值。我使用onCheckedChanged和StringRequest來做到這一點,如果它被手動設置爲「ON」,它會成功將值更改爲「OFF」。但是,當我嘗試從「OFF」更改爲「ON」時,從volley(「com.android.volley.ServerError」)中收到服務器錯誤,並且該值保持不變。我的PHP目前在本地託管,我的登錄和註冊方法也可以正常工作。Android Volley中的服務器錯誤onCheckedChanged中的'if(isChecked)'
的Java:
ToggleButton light = (ToggleButton) findViewById(R.id.lightSwitch);
light.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, LOG_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(DiningRoom.this, response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(DiningRoom.this, error.toString(), Toast.LENGTH_LONG).show();
}
});
MySingleton.getInstance(DiningRoom.this).addToRequestqueue(stringRequest);
}else{
StringRequest stringRequest2 = new StringRequest(Request.Method.POST, LOG_URL2,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(DiningRoom.this, response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(DiningRoom.this, error.toString(), Toast.LENGTH_LONG).show();
}
});
MySingleton.getInstance(DiningRoom.this).addToRequestqueue(stringRequest2);
}
}
});
PHP: 當這個腳本是由瀏覽器加載,它成功地改變從關到開值。錯誤只發生在通過android volley運行時。
<?php
include 'dbConnect.php';
mysqli_query($conn,"UPDATE Component SET component_status = 'ON' WHERE component_id = 10");
?>
我有第二個php文件來處理從開關關閉。