我正在处理一个需要访问帖子数据JSON
的应用程序。我的代码是
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.springframework.web.filter.GenericFilterBean;
public class LoginFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("filtered /login request: " + servletRequest.getParameter("idToken"));
filterChain.doFilter(servletRequest, servletResponse);
}
}
我运行应用程序
$ curl -v -X POST -H "Content-Type: application/json" -d '{"idToken" : "EWRE@#$RWER@#23434W$"}' http://localhost:8080/login
我在日志上获得 null
2017-05-06 06:23:31.153 INFO 89727 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 2 ms
filtered /login request: null
我缺少什么?
您将JSON作为请求主体传递,而不如参数。尝试以这种方式阅读,
servletRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
但是ServletRequest.getReader((返回只能读取一次的读者。