nodejs 获取post数据
demo的原理:使用java向nodejs发送post请求,并携带数据,nodejs收到请求,并将数据打印出来
nodejs服务器端代码:
var http = require("http");
var url = require("url");
var querystring = require('querystring');
http.createServer(function(request, response) {
//request.setEncoding('utf8');
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("送一段数据给你!");
request.addListener('data', function(chunk){
console.log('获取的post数据为:' + chunk);
var name = querystring.parse(chunk + '').name; //chunk是一个对象 加上空字符串将其转换为字符串格式
console.log("--------------------");
console.log(name);
})
response.end();
}).listen(8888)
java端发送post请求代码:
public class NodejsPostData {
public static void main(String[] args) {
URL url;
HttpURLConnection con = null;
try {
url = new URL("http://localhost:8888/");
con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
// http正文内,因此需要设为true
con.setDoOutput(true);
// Read from the connection. Default is true.
con.setDoInput(true);
// Post 请求不能使用缓存
con.setUseCaches(false);
// 进行编码
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
con.connect();
OutputStream out = new BufferedOutputStream(con.getOutputStream());
String content = "你好,这是一个post请求的程序!";
Writer writer = new OutputStreamWriter(out,"UTF-8");
writer.write("name=javaPost");
writer.flush();
writer.close(); //注意:如果既要使用输入流读取URLConnection响应的内容,也要使用输出流发送请求参数,一定要先使用输出流,再使用输入流。
InputStream in = con.getInputStream();
byte[] by = new byte[128];
String str = "";
int len = 0;
while((len = in.read(by))!= -1){
//str = str + new String(by, 0, len); 注意编码问题,否则将会打印出乱码
str = str + new String(by, 0, len,"utf-8");
}
System.out.println(str);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果:
java端console打印结果:
参考地址:http://www.java3z.com/cwbwebhome/article/article8/81193.html