首先先贴微信小程序请求的代码:
我们只传一个参数,使用post请求
wx.request({
url: 'http://127.0.0.1:8080/provider/demo',
data: {
MemberID: 1, //用户编号
},
method: 'post',
dataType: 'json',
success: function (res) {
console.log(res)
}
})
java端代码,两种任选其一:
这是没使用框架的servlet:
@WebServlet("/index")
public class index extends HttpServlet {
public index() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 设置响应头允许ajax跨域访问 */
response.setHeader("Access-Control-Allow-Origin", "*");
/* 星号表示所有的异域请求都可以接受, */
response.setHeader("Access-Control-Allow-Methods", "GET,POST");
//获取微信小程序get的参数值并打印
String memberID = request.getParameter("MemberID");
System.out.println("memberID="+memberID);
//返回值给微信小程序
Writer out = response.getWriter();
out.write("进入后台了");
out.flush();
}
}
这是使用springboot框架的java端
@RestController
public class providerdemo {
@RequestMapping("provider/demo")
public String demo(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
/* 设置响应头允许ajax跨域访问 */
response.setHeader("Access-Control-Allow-Origin", "*");
/* 星号表示所有的异域请求都可以接受, */
response.setHeader("Access-Control-Allow-Methods", "GET,POST");
String memberID = request.getParameter("MemberID");
System.out.println("memberID="+memberID);
return "provider success!";
}
}
然而怎么都拿不到这个参数,但能正确的返回数据,这说明参数在微信小程序那边没传过来。
查了半天资料,发现将请求方式从post改为get就可以拿到参数了。
那我非要使用post请求,从而获得参数呢?
那么需要加上请求头,代码如下:
wx.request({
url: 'http://127.0.0.1:8080/provider/demo',
data: {
MemberID: 1, //用户编号
},
method: 'post',
dataType: 'json',
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: function (res) {
console.log(res.data)
}
})
这样java后台那边就可以得到参数了。