如何获取TaskQueue有效负载?

时间:2013-04-28 12:16:01

标签: java google-app-engine

我正在使用TaskOptions.payload(String)方法将一个小JSON对象写入POST任务队列。

但是,如何在执行任务队列时读取servlet中的内容?

2 个答案:

答案 0 :(得分:2)

如果您使用的是servlet而不是必须实现doPost(..)方法,那么您将获得请求正文并将其解析为JSON:HttpServletRequest get JSON POST data

答案 1 :(得分:1)

这就是我最后所做的。在doPost()中运行此代码。

import org.codehaus.jackson.map.ObjectMapper;
import my.own.PayloadObject;

...

private static final ObjectMapper MAPPER = new ObjectMapper();

...

private PayloadObject getPayload(HttpServletRequest req) throws IOException
{
    InputStream inputStream = req.getInputStream();
    ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();

    int length;
    byte[] buffer = new byte[1024];

    while ((length = inputStream.read(buffer)) >= 0)
        byteArrayStream.write(buffer, 0, length);

    if (byteArrayStream.size() > 0)
        return MAPPER.readValue(byteArrayStream.toByteArray(), PayloadObject.class);

    return null;
}