gpt4 book ai didi

java - Volley 库无法将数据发布到服务器

转载 作者:行者123 更新时间:2023-12-02 01:57:24 26 4
gpt4 key购买 nike

我正在为一个 WordPress 网站开发一个 Android 应用程序,该网站具有登录和注册。

我正在使用 volley 库,它可以很好地连接到服务器,

但我的问题是,当我将参数发布到 api 时,它无法创建任何用户。

我的 api 在 POSTMAN 中运行得很好,没有任何问题。

我的API代码是这样的:

这是 DbOperations.php

public function registerUser($email, $username, $password)
{

if (username_exists($username) && email_exists($email)) {
$error = array();
$error['message'] = "username or email exists";
return $error;
}
else {
$user_id = wp_create_user($username, $password, $email);
if (!is_wp_error($user_id))
{
wp_set_password($password,$user_id);
}
else
{
$error = array();
$error['message'] = "can not create user";
return $error;
}


}
}

这是我的 register_user.php 代码:

include ('DbOperations.php');
$dbOperate = new DbOperations();
$username = @($_POST['username']);
$password = @($_POST['password']);
$email=@($_POST['email']);
$regArray = array();
$regArray = $dbOperate->registerUser($email,$username,$password);
print_r(json_encode($regArray));

在这段代码之后,这是我的 android studio 代码:这是我在 registerActivity 中编写的一个方法,当用户单击注册按钮时,该方法会执行。所有输入均已设置。

 private void DoSignUp()
{

String url = "http://192.168.43.241/wp-includes/rest-api/register_user.php";

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, null,
new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
Toast.makeText(RegisterActivity.this, "Succeed" + response.toString(), Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(RegisterActivity.this, "Error" + error.toString(), Toast.LENGTH_LONG).show();
}
}) {

@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("username",RegUser);
params.put("password", RegPass);
params.put("email", RegEmail);
return params;
}

};

// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq);

}

我搜索了很多,但没有找到任何东西,我再说一遍,我的 api 在 postman 中运行得很好。我使用真实设备来测试我的应用程序。

最后,这是我在 Android 上单击注册按钮时得到的结果:

succeed{"message","can not crate user"}

谢谢你帮助我

最佳答案

检查JsonObjectRequest源代码来自github。这个构造函数

    public JsonObjectRequest(
int method,
String url,
@Nullable JSONObject jsonRequest,
Listener<JSONObject> listener,
@Nullable ErrorListener errorListener)

接受JSONObjectjsonRequest 用作发布数据。您要发布的数据。来自方法文档:

@param jsonRequest A {@link JSONObject} to post with the request. Null indicates no * parameters will be posted along with request.

因此,如果您想发布一些数据,请不要传递null。使用您的数据创建一个 JsonObject ,例如:

Map<String, String> params = new HashMap();
params.put("param1", 1);
params.put("param2", 2);

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, params,
new Response.Listener<JSONObject>() {...}

getParams 方法不适用于 JsonObjectRequest,因为它未被调用。

关于java - Volley 库无法将数据发布到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121758/

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