遇到的问题:
用SSM做后台,当微信小程序向后台传递数据时(包括对象和字符串),传递总是失败,错误报400。wx.request的请求语法也是没有问题的,但是后台不识别。所以我新建了一个【servlet】,在doGet方法里写内容。因为wx.request的请求默认是GET方法。也可以改成POST,那么就在【servlet】的doPost方法体里写代码。
以下是两个简单的小实验。
传递对象:
微信页面:
test(){
var goods={};
goods.goodsId="2020002";
wx.request({
url: 'http://192.168.1.3:8080/SweetWine/SearchGoodsBygoodsId', //仅为示例,并非真实的接口地址
data: {
goods
},
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
console.log(res)
}
})
}
后端的servlet:
String goodsId=request.getParameter("goods");
System.out.println(request);
System.out.println(goodsId);
后台输出结果:
org.apache.catalina.connector.RequestFacade@2b3dfa73
{“goodsId”:“2020002”}
传递字符串:
微信页面:
test(){
let goodsId="2030002";
wx.request({
url: 'http://192.168.1.3:8080/SweetWine/SearchGoodsBygoodsId', //仅为示例,并非真实的接口地址
data: {
goodsId
},
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
console.log(res)
}
})
}
后端的servlet:
String goodsId=request.getParameter("goodsId");
System.out.println(request);
System.out.println(goodsId);
后台输出结果:
org.apache.catalina.connector.RequestFacade@2b3dfa75
2020002
没啥用的后台代码:
package com.guo.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.guo.entity.Goods;
import com.guo.service.GoodsService;
import com.guo.service.impl.GoodsServiceImp;
import net.sf.json.JSONObject;
/**
* Servlet implementation class SearchGoodsBygoodsI
*/
@WebServlet("/SearchGoodsBygoodsI")
public class SearchGoodsBygoodsI extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchGoodsBygoodsI() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
String goodsId=request.getParameter("goodsId");
System.out.println(request);
System.out.println(goodsId);
GoodsService goodsService=new GoodsServiceImp();
JSONObject obj=new JSONObject();
if(goodsService.SearchGoodsBygoodsId(goodsId)!=null) {
List<Goods> goods=goodsService.SearchGoodsBygoodsId(goodsId);
obj.put("goods", goods);
}else {
obj.put("goods", "NULL");
}
PrintWriter out=response.getWriter();
out.println(obj);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//doGet(request, response);
}
}