Я использую библиотеку Android Volley
для выполнения запросов на PHP-скрипты на моем сервере довольно долгое время. Теперь я получаю необычную ошибку, когда я это делаю.Android Volley запрос throwing Null Pointer Exception
Мой Android код для вызова скрипта выглядит следующим образом:
private void writeDatatoDB(){
StringRequest sr = new StringRequest(Request.Method.POST,URL , new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(),Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> maps = new HashMap<>();
maps.put(SinchHolders.phpUserName,uName);
maps.put(SinchHolders.phpUserNickName,uNick);
maps.put(SinchHolders.phpUserPassword,uPass);
maps.put(SinchHolders.phpUserFirebaseToken,uFCM);
maps.put(SinchHolders.phpUserProfession,uUserProf);
maps.put(SinchHolders.phpUserexpertise,uUserExp);
maps.put(SinchHolders.phpUserGender,ugender);
maps.put(SinchHolders.phpUserZip,uZip);
maps.put(SinchHolders.phpUserBirthYear,uBirth);
return maps;
}
};
RequestQueue rq = Volley.newRequestQueue(dummy_signup_2.this);
rq.add(sr);
}
РНР скрипт, что Volley
библиотека выглядит следующим образом:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id = $_POST['UserName'];
$nick =$_POST['NickName'];
$pass =$_POST['UserPassword'];
$FirebaseToken = $_POST['FireBaseId'];
$BDate = $_POST['bithdate'];
$ZCode = $_POST['zipcode'];
$Gender = $_POST['sex'];
$UserProfession = $_POST['userprofession'];
$userexpert = $_POST['userexpertise'];
$sql="insert into `User`(`UserNickName`, `UserName`, `password`, `createDate`, `FirebaseToken`, `BirthYear`, `ZipCode`, `Gender`, `UserProfession`, `UserExpertise`) values ('$nick','$id','$pass',Default,'$FirebaseToken','$BDate','$ZCode','$Gender','$UserProfession','$UserExpertise')";
require_once('db_connect_me.php');
if(mysqli_query($con,$sql)){
echo"Success";
}
else{
echo "Failure";
}
mysqli_close($con);
}else{
echo "Error";
}
?>
ошибка, что Volley
бросает меня, com.android.volley.VolleyError: Java.Lang.NullPointerException
, Ошибка вызвана некоторой ошибкой со стороны сервера, так как ошибка перескакивается в тосте, который был определен в ErrorListener
. Я не понимаю, в чем проблема. Я создал простой PHP-файл helloworld и назвал его с использованием того же кода, и я смог получить результат. Что может быть неправильно с этим?
StackTrace:
01-27 19:11:41.715 12548-16431/com.example.****.****E/Volley: [2720] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
java.lang.NullPointerException
at libcore.net.UriCodec.encode(UriCodec.java:132)
at java.net.URLEncoder.encode(URLEncoder.java:57)
at com.android.volley.Request.encodeParameters(Request.java:450)
at com.android.volley.Request.getBody(Request.java:436)
at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:260)
at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:234)
at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
PS: Пожалуйста, прочитайте вопрос внимательно, и вы бы поняли, что это не является дубликатом любых NullPointerException
вопросов, найденных на этом сайте.
Какая линия бросает * NullPointerException *? – adalPaRi
@adalPaRi Ответ от сценария бросает исключение. Тост, который указан в 'ErrorListener', бросает это исключение. – Tyson
вы php-код моего привести к SQL-инъекции, пожалуйста, используйте mysqli_real_escape_string –