大请求属性上的 HttpURLConnection FileNotFoundException
HttpURLConnection FileNotFoundException on large request properties
我正在使用 HttpURLConnection 将 JSON 数据从 Android 应用程序发送到我的 Tomcat 服务器。
POST 适用于小型 JSON。在更大的数据集上它失败并出现 FileNotFoundException。
它可以是什么?
代码如下:
try {
URL url = new URL(urlIn);
strOut = "";
huc = (HttpURLConnection) url.openConnection();
huc.setRequestProperty("Connection", "Close");
huc.setRequestMethod("POST");
huc.setRequestProperty("User", userId);
huc.setRequestProperty("Action", action);
huc.setRequestProperty("JSON", jsonData);
huc.setConnectTimeout(10000);
in = new BufferedReader(new InputStreamReader(huc.getInputStream()));
while ((inputLine = in.readLine()) != null){
if (strOut.equalsIgnoreCase("")){
strOut = inputLine;
} else {
strOut = strOut + inputLine;
}
}
} catch (Exception e) {
strOut = "";
e.printStackTrace();
}
当 jsonData 达到一定大小(大约 10000 个字符)时,POST 失败并出现上述错误。 JSON的内容没有任何特殊字符。
提前致谢。
此致,费德里科。
HTTPUrlConnection
如果服务器响应 404
响应代码,则抛出 FileNotFoundException
,因此发生这种情况的原因似乎位于服务器端而不是客户端.很可能服务器配置为接受请求 headers 达到特定长度,如果超过该大小将 return 出错。一个简短的 Google-search 带来了几个结果,提到了 16 KB 的大小,但更短的值也是合理的。
正如我在对您的问题的评论中提到的,您应该更改流程以接收 JSON-data(以及 User
和 Action
的其他值以及顺便说一句)请求的一部分 body,例如作为 url-encoded 查询字符串或多部分表单数据。您可以使用或轻松手动构建的 HTTP 客户端库支持这两种方式。
经过大量阅读和尝试后,我放弃了配置 Tomcat 以接受更大的 headers。
所以我说服了负责 Tomcat 应用程序的团队制作一个能够在 body 中接收此数据的 servlet,正如 Lothar 所建议的那样。
谢谢!
我正在使用 HttpURLConnection 将 JSON 数据从 Android 应用程序发送到我的 Tomcat 服务器。
POST 适用于小型 JSON。在更大的数据集上它失败并出现 FileNotFoundException。
它可以是什么?
代码如下:
try {
URL url = new URL(urlIn);
strOut = "";
huc = (HttpURLConnection) url.openConnection();
huc.setRequestProperty("Connection", "Close");
huc.setRequestMethod("POST");
huc.setRequestProperty("User", userId);
huc.setRequestProperty("Action", action);
huc.setRequestProperty("JSON", jsonData);
huc.setConnectTimeout(10000);
in = new BufferedReader(new InputStreamReader(huc.getInputStream()));
while ((inputLine = in.readLine()) != null){
if (strOut.equalsIgnoreCase("")){
strOut = inputLine;
} else {
strOut = strOut + inputLine;
}
}
} catch (Exception e) {
strOut = "";
e.printStackTrace();
}
当 jsonData 达到一定大小(大约 10000 个字符)时,POST 失败并出现上述错误。 JSON的内容没有任何特殊字符。
提前致谢。
此致,费德里科。
HTTPUrlConnection
如果服务器响应 404
响应代码,则抛出 FileNotFoundException
,因此发生这种情况的原因似乎位于服务器端而不是客户端.很可能服务器配置为接受请求 headers 达到特定长度,如果超过该大小将 return 出错。一个简短的 Google-search 带来了几个结果,提到了 16 KB 的大小,但更短的值也是合理的。
正如我在对您的问题的评论中提到的,您应该更改流程以接收 JSON-data(以及 User
和 Action
的其他值以及顺便说一句)请求的一部分 body,例如作为 url-encoded 查询字符串或多部分表单数据。您可以使用或轻松手动构建的 HTTP 客户端库支持这两种方式。
经过大量阅读和尝试后,我放弃了配置 Tomcat 以接受更大的 headers。
所以我说服了负责 Tomcat 应用程序的团队制作一个能够在 body 中接收此数据的 servlet,正如 Lothar 所建议的那样。
谢谢!