gpt4 book ai didi

java - 使用 httpclient 将数据发布到 servlet

转载 作者:行者123 更新时间:2023-12-01 15:40:46 25 4
gpt4 key购买 nike

我正在尝试使用 HttpClient 将 2 个字段(id 和 data)发布到 servlet。问题是,如果数据字段的长度小于 1MB 左右,servlet 将获取我发布的内容。但是,如果数据字段的长度大于 1MB 左右,则 servlet 将收到所有字段的 null。我在这里缺少什么?谢谢。

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

id=12312123123123

data=the content of a file that is base-64 encoded

这是我用来将数据发送到 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)
{
}
}

最佳答案

通常 servlet 容器有一个最大帖子大小参数。

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

Is there a max size for POST parameter content?

关于java - 使用 httpclient 将数据发布到 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com