我已在Google App Engine上实施了推送任务队列。这是我调用任务队列的代码
Queue queue = QueueFactory.getDefaultQueue();
queue.add(TaskOptions.Builder.withUrl("/tasks/myTask").param("myparam", Long.toString(myparam)).retryOptions(RetryOptions.Builder.withTaskRetryLimit(1)).method(TaskOptions.Method.POST)) ;
这是任务的代码
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
String param = req.getParameter("myparam") ;
resp.setStatus(HttpServletResponse.SC_OK);
resp.setContentType("text/plain");
resp.getWriter().println("dummy");
resp.getWriter().flush();
}
但是我可以在日志中看到我的任务返回状态代码405并且任务将再次执行但是在我的代码中我将值200设置为响应代码。知道为什么我的代码无效吗?
答案 0 :(得分:0)
文档状态
TaskOptions.Builder构造函数具有将数据添加为有效负载的方法 作为参数的HTTP请求和添加到URL的参数 查询参数。
PARAMS
如果您正在使用POST方法,请不要指定params 有效负载,或者如果您使用的是GET方法,并且您已经包含了一个网址 查询参数。
您正在使用POST方法添加任务。
移除对.method(TaskOptions.Method.POST)