【发布时间】:2017-01-15 14:10:26
【问题描述】:
我正在创建一个应用程序,它使用一些 node.js 脚本来编写服务器脚本,主要是因为 node.js 支持 Firebase,但由于某种原因,我无法通过我的请求发送任何参数(GET 和 POST)。
我的android代码如下
private void sendData(final String name){
StringRequest sr = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(),response.toString()+" returned from node.js server",Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString()+"The Server returned error",Toast.LENGTH_SHORT).show();
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String,String> map = new HashMap<>();
map.put("test",name);
return map;
}
};
RequestQueue r = Volley.newRequestQueue(getApplicationContext());
r.add(sr);
}
对应的node.js脚本如下
app.get('/hello', function(request, response){
var outputJson = request.params.test;
response.send(JSON.stringify(outputJson));
console.log(outputJson);
})
出于某种原因,控制台总是记录 undefined。根据this post 的建议,我还尝试在请求正文中包含数据,并通过request.body.test 从node.js 中的请求中获取数据。
我想知道出了什么问题,最重要的是我还想知道如何接收和处理POST 请求。我在一些博客上读到我必须实现某种middleware。对此领域的一些澄清也将不胜感激。
【问题讨论】:
-
你试过
/hello/:test吗? -
sfbpush.herokuapp.com/hello/:test=xxx。我在调试器中使用了它,它仍然没有返回任何东西
-
尝试使用
request.param('test')获取参数怎么样?但在此之前,请尝试在您的路线中使用hello/:test -
sfbpush.herokuapp.com/hello?test=xxx 与
request.param('test)一起使用,但是当我从 android 调用它时它不起作用。我用 REST 调试器测试了它 -
不,我也尝试添加路线,但仍然无法正常工作
标签: javascript android node.js express