我一直在使用Android Volley
庫在我的服務器上執行PHP腳本的請求很長一段時間。現在,當我這樣做時,我遇到了一個不尋常的錯誤。Android排球請求拋出空指針異常
我的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腳本:
<?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
中定義的烤麪包中顯示。我不明白這個問題可能是什麼。我創建了一個簡單的helloworld php文件,並使用相同的代碼調用該文件,並且我能夠獲得輸出結果。這可能有什麼錯誤?
堆棧跟蹤:
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 –