【发布时间】:2009-05-27 14:43:14
【问题描述】:
我有一个 java 函数可以为 xml 文件生成数字签名。这是给我一些麻烦的摘录:
String boundary = MultiPartFormOutputStream.createBoundary();
HttpURLConnection urlConn = (HttpURLConnection)MultiPartFormOutputStream.createConnection(new URL(url + "/sign"));
urlConn.setRequestProperty("Accept", "*/*");
urlConn.setRequestProperty("Content-Type", MultiPartFormOutputStream.getContentType(boundary));
urlConn.setRequestProperty("Cache-Control", "no-cache");
urlConn.setDOInput(true);
urlConn.setDoOutput(true);
MultiPartFOrmOutputStream up = new MultiPartFormOutputStream(urlCOnn.getOutputStream(), boundary);
up.writeField(SignServletParams.detachedParam, "1");
up.writeFile(SignServletParams.xmlParam, "text/xml", "xml_file.xml", XMLUtil.toEncodedStream(doc);
up.close();
Document ret = null;
String connRead = "";
BufferedReader down = new BufferedReader(new InputStreamReader(urlCOnn.getINputStream()));
如果我尝试上传小的 xml 文件,它可以正常工作,但是,如果 xml 文件较大(有几千个节点),我会得到一个 IOException,其中正在创建 BufferedReader。异常消息只是指出服务器返回了 500 状态。我检查了 Apache 服务器日志,它报告了以下内容:
输入过滤器:无法创建临时文件:“文件名”
我从编写它的其他人那里继承了此代码,因此我仍在尝试将所有内容拼凑在一起,但任何有关该函数为何适用于小文件而无法用于较大文件的任何见解将不胜感激。
【问题讨论】:
-
所以是java客户端发送xml,Apache处理?图中有没有php?