gpt4 book ai didi

java - Android Volley 请求抛出空指针异常

转载 作者:搜寻专家 更新时间:2023-11-01 08:29:38 24 4
gpt4 key购买 nike

我一直在使用 Android Volley 库在我的服务器中执行对 PHP 脚本的请求已有一段时间了。现在,我在执行此操作时遇到异常错误。

我调用脚本的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 中定义的 toast 中。我不明白问题可能是什么。我创建了一个简单的 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 问题重复的问题。

最佳答案

当任何 params 值为 null 时,您将得到此 exception。检查 params

中的值参数
 @Override
protected Map<String, String> getParams() throws AuthFailureError {
//put your map keys
return checkParams(params);
}

private Map<String, String> checkParams(Map<String, String> map){
Iterator<Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pairs = (Map.Entry<String, String>)it.next();
if(pairs.getValue()==null){
map.put(pairs.getKey(), "");
}
}
return map;
}

关于java - Android Volley 请求抛出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com