Node.js后台与android客户端之间进行数据传输
- Android客户端方面:
使用okhttp3,post请求,并获取返回值。(需要将代码放入新开辟的线程中,不允许在主线程中运行)
String url = "http://10.111.60.88(电脑IP):3000(监听的端口号)/loadUserPoint";
final OkHttpClient client = new OkHttpClient();
//没有上传参数传输至后台
RequestBody requestBody = new FormBody.Builder()
.build();
//带有上传参数传输至后台
RequestBody requestBody = new FormBody.Builder()
.add("username", Username)
.add("password", Password)
.build();
final Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
if (response.isSuccessful()) {
//若后台返回JsonArray格式,JsonArray格式[{name:"heihei",age:24,sex:"男"},{name:"haha",age:20,sex:"女"}]
InputStream ins = response.body().byteStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
String line;
//StringBuilder 缓存区 StringBuffer
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
br.close();
int i = 0;
JSONArray jsarr = new JSONArray(builder.toString());
//若后台返回字符串
ResponseBody responseBody = response.body();
BufferedSource source = response.body().source();
MediaType contentType = responseBody.contentType();
Charset charset = Util.bomAwareCharset(source, contentType.charset(Util.UTF_8));
String var3 = source.readString(charset);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
. Node.js,使用Express框架进行搭建。安装 Express : $ npm install express –save
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
//android使用Post请求,所以这里要使用app.post(),与Android请求对应
app.post("/loadUserPoint",function(req,res){
//若Android上传参数为空,则data为空,若不为空,则data为上传参数的json对象。
var data = req.body;
console.log(data);
//返回值一般是对数据库进行一些列操作后再发送出去的
//发送字符串
res.send("gc")
//发送JsonArray
res.send([{name:"heihei",age:24,sex:"男"},{name:"haha",age:20,sex:"女"}])
});
app.listen(3000); //监听3000端口