我正在使用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文件来处理从开关关闭。