使用httpclient将数据发布到servlet

时间:2011-11-09 20:34:19

标签: java post httpclient

我正在尝试使用HttpClient将2个字段,id和数据发布到servlet。 问题是如果数据字段的长度小于1MB左右,servlet将得到我发布的内容。但是如果数据字段的长度大于1MB左右,则servlet将为所有字段接收null。我在这里错过了什么?感谢。

以下是我发布到servlet的示例数据:

  

id = 12312123123123

     

data = base-64编码文件的内容

这是我用来将数据发布到servlet的方法。

    private byte[] post(String aUrl,
                        Map<String,String> aParams,
                        String aCharsetEnc,
                        int aMaxWaitMs) throws Exception
{
    PostMethod post = null;
    try
    {
        HttpClient client = new HttpClient();
        post = new PostMethod(aUrl);
        post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=" + aCharsetEnc);           

        for (String key : aParams.keySet())
        {
            post.addParameter(key, aParams.get(key));
        }

        final int code = client.executeMethod(post);
        if (code == HttpStatus.SC_NO_CONTENT || code == HttpStatus.SC_NOT_FOUND)
        {
            return null;
        }
        else if (code != HttpStatus.SC_OK)
        {
            throw new HttpException("Error code " + code + " encountered.");
        }

        InputStream stream = post.getResponseBodyAsStream();
        if (stream != null)
        {
            return BlobHelper.readBytes(stream);
        }
        return null;
    }
    finally
    {
        if (post != null)
        {
            post.releaseConnection();
        }
    }
}

这是servlet的方法。

public void doPost(HttpServletRequest aReq, HttpServletResponse aResp)
    throws ServletException, IOException
{
    setNoCache(aResp);
    aResp.setContentType("text/plain");

    try
    {
        final String id = aReq.getParameter(PARAM_ID);
        final String dataStr = aReq.getParameter(PARAM_DATA);


        if (log().isDebugEnabled())
        {
            log().debug("id=" + id);
            log().debug("data=" + dataStr);
        }
     }
     catch (Exception e)
     {
     }
}   

1 个答案:

答案 0 :(得分:1)

通常,servlet容器具有最大的post size参数。

对于Tomcat,您可以按照此处记录的步骤进行操作(对于其他应用程序服务器,它们应该类似) -

Is there a max size for POST parameter content?