首页 > 解决方案 > Volley 字符串请求在 Kotlin 中不起作用

问题描述

嗨,伙计们,我已经被这个问题困扰了几个星期了,我希望你能帮我解决这个问题。所以我有一个带数据库的本地服务器(PHPMyadmin + MySQL),我有一个请求,我用 Postman 调用如下 http://localhost/WebApi/v1/?op=addBars 我通过这个请求传递了 4 个值 first_name,Last_name,电子邮件和通行证,它们将保存在数据库中,并且工作正常。但是当我尝试在 Kotlin 中使用 Volley 将数据发送到数据库时:我没有得到任何答案,也没有错误,所以这就是我的 V1.php 的样子

case 'addBars':
                if(isset($_POST['Email']) && isset($_POST['Pass']) && isset($_POST['First_Name'])&& isset($_POST['Last_Name'])){
                    $db = new DbOperation(); 
                    if($db->createBars($_POST['Email'], $_POST['Pass'],$_POST['First_Name'], $_POST['Last_Name'])){
                        $response['error'] = false;
                        $response['message'] = 'Bars added successfully';
                    }else{
                        $response['error'] = true;
                        $response['message'] = 'Could not add Bars';
            }                  
                }else{
                    $response['error'] = true; 
                    $response['message'] = 'Required Parameters are missing';
                }
            break; 

这也是 DbOperation.php 中创建栏的样子


    public function createBars($Email,$Pass,$First_Name,$Last_Name){
        $stmt = $this->con->prepare("INSERT INTO Bars (Email, Pass,First_Name,Last_Name) VALUES (?,?,?,?)");
        $stmt->bind_param("ssss", $Email, $Pass,$First_Name,$Last_Name);
        if($stmt->execute())
            return true; 
        return false; 
    }

这也是我在 Kotlin 中使用 Volley 请求的方式

           val stringRequest = object : StringRequest(Request.Method.POST, EndPoints.URL_ADD_Bars,
                Response.Listener { response ->
                    try {
                        
                        val obj = (response)
                        Toast.makeText(applicationContext ,"test "+obj+"" , Toast.LENGTH_SHORT).show()

                       // Toast.makeText(applicationContext, obj.getString("message"), Toast.LENGTH_LONG).show()
                    } catch (e: JSONException) {
                        Toast.makeText(applicationContext, "response,"+response.toString()+"", Toast.LENGTH_LONG).show()
                        e.printStackTrace()
                    }
                },

                object : Response.ErrorListener {
                    override fun onErrorResponse(volleyError: VolleyError) {
                         Toast.makeText(applicationContext, "error,"+volleyError.toString()+"", Toast.LENGTH_LONG).show()

                    }
                })
            
            {
                @Throws(AuthFailureError::class)
                override fun getParams(): Map<String, String> {
                    val params = HashMap<String, String>()
                    params.put("Email",Email)
                    params.put("Pass",Pass)
                    params.put("First_Name",First_Name)
                    params.put("Last_Name",Last_Name)
                    return params
                }
        }

        //adding request to queue
        VolleySingleton.instance?.addToRequestQueue(stringRequest)}

这就是我的端点的样子

object EndPoints {
    private val URL_ROOT = "https://192.130.180.209/WebApi/v1/?op="
    val URL_ADD_Bars = URL_ROOT + "addBars"
    val URL_GET_Bars = URL_ROOT + "getBars"
    val URL_Bars_info = URL_ROOT + "Bars_info"

    val URL_Bars_Listing = URL_ROOT + "Bars_Listing"

    val URL_Bars_Listing_name_adress = URL_ROOT + "Bars_Listing_name_adress"
    val URL_Bars_info_update_api = URL_ROOT + "Bars_info_update_api"

}


如果你能帮我解决这个问题,我将不胜感激:),我有任何问题,我正在使用 volley:1.1.0 compileSdkVersion 29 buildToolsVersion "29.0.3"

标签: phpjsonkotlinsingletonandroid-volley

解决方案


嘿伙计们,我解决了我只是在端点中提供了错误的 IP 地址的问题


推荐阅读