gpt4 book ai didi

Android Volley JsonObjectRequest 不发送参数

转载 作者:行者123 更新时间:2023-11-29 20:22:54 24 4
gpt4 key购买 nike

我正在尝试使用一些参数向我的服务器发送 JsonObjectRequest,但似乎参数没有到达服务器。在 SO 上发帖之前,我尝试了在 google 中找到的所有建议,但没有一个工作正常..

这是我的 JsonObjectRequest 的代码:

RequestQueue queue = MySingleVolley.getInstance(ctx).
getRequestQueue();

JsonObjectRequest jsObjRequest = new JsonObjectRequest(method,url,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("REQUEST_JSON_TO_SERVER", "Success: " + response.toString());
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("REQUEST_JSON_TO_SERVER", "Error: " + error);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Map<String, String> getParams() {
return params;
}
};

MySingleVolley.getInstance(ctx).addToRequestQueue(jsObjRequest);

这些是我的参数和其他参数:

String url =  "url";

//create the hashMap of parameters
database_zappapp db = new database_zappapp(getApplicationContext());
db.open();
HashMap<String, String> params = new HashMap<>();
params.put("action","myAction");
params.put("nomeutente", db.getUsernameLogged());
params.put("token", token);
db.close();


//Send the request to the server
Global.RequestJsonToServer(getApplicationContext(), url, Request.Method.POST, params);

在此先感谢您的帮助!

编辑2

我在创建字符串 jsonBody 时更改了我的参数:

JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("action","gcmUserRegister");
jsonObject.put("nomeutente",db.getUsernameLogged());
jsonObject.put("token",token);
}catch(JSONException e){
e.printStackTrace();
}
String requestBody = jsonObject.toString();
db.close();

我对 getBody() 的请求是这样的:

JsonObjectRequest jsObjRequest = new JsonObjectRequest(method,url,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("REQUEST_JSON_TO_SERVER", "Success: " + response.toString());
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("REQUEST_JSON_TO_SERVER", "Error: " + error);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
public byte[] getBody() {
try {
return requestBody == null ? null : requestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",
requestBody, "utf-8");
return null;
}
}
};

但是已经不行了! =(

postman 屏幕:

没有找到用户意味着它在 if 语句中输入,因此它可以工作。使用 android 我收到“结果”:“null”

带有 app/json 的 postman 屏幕:

enter image description here

最佳答案

我找到了解决方案!

问题出在服务器而不是客户端,我使用 POST 获取数据但是从客户端我发送了一个 json 对象,所以我的新 php 是:

$data = json_decode(file_get_contents('php://input'), true);

//echo "Action: ".$action;
//Registrazione del token
if($data['action'] == "gcmUserRegister"){
......

非常感谢 BKS!!!

关于Android Volley JsonObjectRequest 不发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32910502/

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