我正在尝试使用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)
{
}
}
答案 0 :(得分:1)
通常,servlet容器具有最大的post size参数。
对于Tomcat,您可以按照此处记录的步骤进行操作(对于其他应用程序服务器,它们应该类似) -