我正在发送带有一些参数的字符串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(),但是似乎没有任何效果,并且上述代码在im在localhost中使用时也能正常工作。我检查了URL是否正常,因为PHP脚本很好,因为我通过回显它执行得很好的其他方式对其进行了测试。
答案 0 :(得分:1)
已解决!!!不能想想这个!实际上,我使用的URL类似于:-http://www.example.com,但是当我尝试http://example.com时..它却起到了作用……虽然感谢大家的帮助!
答案 1 :(得分:0)
通常,此问题可能来自Content-Type,向其添加charset = utf-8:
params.put("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
答案 2 :(得分:0)
您仅发送;
params.put("phone", mPhone);
params.put("email", mEmail);
params.put("password", mPassword);
怎么样?
params.put("apicall","YOu_API");
我猜没有设置apicall
,所以值将为空。