【发布时间】:2016-08-04 17:03:27
【问题描述】:
我以前从未使用过curl。我正在尝试运行命令并在 Web 应用程序中解析 XML 结果。
curl -k https://ip.address.example --data-urlencode file.xml
所以我的选择仅限于:
- 使用带有
Runtime.getRuntime.exec的servlet 执行命令 - 使用
jQuery.ajax()
我试过这个:
$.ajax({
url : "https://ip.address.example",
type : 'GET',
dataType : 'json',
contentType : 'application/json',
file: "file.xml",
success : function(data) {
console.log(JSON.stringify(data));
},
error : function() {
console.log("Cannot get data");
}
});
但它似乎不起作用。
第一种方法,我试过了:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Gson gson = new GsonBuilder().serializeNulls().create();
Process p = Runtime.getRuntime().exec("curl -k https://ip.address.example --data-urlencode file.xml");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line , output = "";
while ((line = reader.readLine()) != null) {
output += line + "\n";
}
System.out.println(output);
out.printf(gson.toJson(output));
} catch (Exception e) {
e.printStackTrace();
}
}
但我在out.printf(gson.toJson(output)); 上遇到错误
java.util.UnknownFormatConversionException: Conversion = ')'
有什么建议吗?
【问题讨论】:
-
--data-urlencode 用于将数据 POST 到 Web 服务器。使用 jQuery 无法轻松完成发布文件。对于初学者来说,jQuery.ajax 在其设置中甚至没有“文件”属性。对于 jQuery,您应该查看一些文件上传插件。如果 file.xml 是 servlet 的本地文件,则可以使用 java 方法。如果没有,您仍然有将 file.xml 上传到 servlet 的障碍。
-
我尝试了第一种方法,但我的代码有问题。