如何 Android http post 到 Node.js

How to Android http post to Node.js

我想从 Android 向 Node.js 服务器发送一个简单的 HTTP POST 请求。谁能告诉我我做错了什么?

Android代码:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://54.68.139.250/bscreateuser");

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", "hellomoto"));
        nameValuePairs.add(new BasicNameValuePair("password", "pswd"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Node.js代码:

app.get('/bscreateuser', function(request, response) {
  process.stdout.write("Attempted to create a user.");
  bscreateUser(request.query.username, request.query.password);
  response.send('-- BS -- User Created! username: ' + request.query.username +
    ' password: ' +
    request.query.password);
});

function bscreateUser(username, password) {
  messageBody = 'create_user("' + username + '","' + password + '")';
  queueUrl = DAO_QUEUE_URL;
  // sys.puts("--- going for BS ---");
  sendSQSMessage(JSON.stringify(messageBody), queueUrl);
}

如果您正在 posting 数据

,则您创建的 GET 路由必须是 post

节点代码

app.post(..

并且参数可能会得到

request.body.username or request.body.password

node.js 代码中,您使用的是

app.get('/bscreateuser', ...

相反,您需要使用 post 方法

app.post('/bscreateuser', ...

并像这样访问请求的变量:

request.body.varname