【发布时间】:2018-12-10 08:56:02
【问题描述】:
我正在发送带有一些参数的字符串 POST 请求,但在 PHP 脚本中,我总是将参数值设为 null。当我用邮递员测试 PHP 时,它工作正常。
这是我的截击请求代码:
public void login(final String mPhone, final String mEmail, final String mPassword) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getBoolean("error")) {
String error = jsonObject.getString("message");
if (error.equals("new user")) {
registerUser();
} else {
showProgress(false);
Snackbar.make(mOtpView, error, Snackbar.LENGTH_SHORT).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
showProgress(false);
Snackbar.make(mOtpView, error.getMessage(), Snackbar.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("phone", mPhone);
params.put("email", mEmail);
params.put("password", mPassword);
return params;
}
};
//Method to limit retry policy of request
stringRequest.setRetryPolicy(
new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2,
3,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
)
);
try {
//Adding request to request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
} catch (Exception e) {
e.printStackTrace();
}
}
这是我的 PHP:
require_once 'DbConfig.php';
$response = array();
if (isset($_GET['apicall'])) {
switch ($_GET['apicall']) {
case 'login':
$phone = $_POST['phone'];
$email = $_POST['email'];
$pass = $_POST['password'];
echo $phone.$email.$pass;exit();
我尝试通过覆盖 getHeaders() 来添加标头,也尝试覆盖 getBodyContent() 但似乎没有任何效果,而且当我在 localhost 中使用上面的代码时,它也可以正常工作。我检查了 URL 是否正常,因为 PHP 脚本很好,因为我已经通过回显它执行的其他内容对其进行了测试。
【问题讨论】:
-
检查这个 $_GET['apicall'] 是否为空
-
可能是进程没有进入回显语句
-
还可以使用 Log 从 android 端检查您是否实际发送数据
-
@Urvishrana 我的 getParams() 方法正在调用,它正在初始化地图并成功返回
-
标签: php android android-volley