我目前正在尝试使用CodeIgniter访问我的数据库。但是我无法从StringRequest方法传递参数。它说:
消息:未定义索引:电子邮件
这是我的php代码:
public function index() {
echo $_POST['email'];
}
这是我的StringRequest:
StringRequest request = new StringRequest(Request.Method.POST, SEND_REQUEST_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Volley Error", error.getMessage());
}
}) {
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded; charset=UTF-8";
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("email", "test@test.com");
return params;
}
};
AppController.getInstance().addToRequestQueue(request);
我也尝试添加:
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type","application/x-www-form-urlencoded");
return params;
}
注意:
另外需要注意的是: 如果我将url发送到单个普通的php文件以回显POST值,它就可以工作。但它无法进入我的codeIgniter中的php文件。
更新: 我发现虽然我从我的Android应用程序中使用了POST方法,但不知何故,codeigniter将其作为GET方法。我知道这个使用
$ _ SERVER [ 'REQUEST_METHOD']
答案 0 :(得分:1)
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("email", "test@test.com");
return params;
}
};
requestQueue.add(request);
我希望这篇文章可以帮到你