无法使用volley发送POST JsonObjectRequest

时间:2018-05-21 20:37:01

标签: android node.js android-volley

我只想使用凌空发送POST请求,但在服务器端我什么都没得到:

这是我的代码:

机器人

JsonObjectRequest sr = new JsonObjectRequest(Request.Method.POST, URL,null,
                    new Response.Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject response){

                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }){
                @Override
                protected Map<String, String> getParams() throws 
         AuthFailureError {
                    Map<String,String> params = new HashMap<>();
                    params.put("email",email.getText().toString());
                    return params;
                }
            };
            queue.getInstance(getApplicationContext()).add(sr);

节点

const express = require('express');
const app = express() ; 
const bodyParser = require('body-parser') ; 


app.use(bodyParser.urlencoded({extended : false}));
app.use(bodyParser.json()) ; 

app.post('/register',(req,res)=>{
//email and passwords

console.log(req.body);
})

app.listen(80);

这就是结果:{}

但是,当我使用StringRequest时,所有内容都会正常运行,但当我使用JsonObjectRequest时,似乎node.js无法读取传入请求的正文。

1 个答案:

答案 0 :(得分:0)

您为JsonObjectRequest的第三个参数传入null。

&#34;允许Null,表示不会随请求一起发布参数。&#34; https://android.googlesource.com/platform/frameworks/volley/+/43950676303ff68b23a8b469d6a534ccd1e08cfc/src/com/android/volley/toolbox/JsonObjectRequest.java#40

如果要使用JsonObjectRequest,则在那里传递JSONObject。

Map<String,String> params = new HashMap<>();
params.put("email", "email@email.com");
JSONObject json = new JSONObject(params);

JsonObjectRequest sr = new JsonObjectRequest(Request.Method.POST, URL, json, ...)
queue.getInstance(getApplicationContext()).add(sr);