我想在Java程序中使用Runtime.getRuntime().exec来使用curl。
完整的代码片段如下,但是我的问题归结为:当我在Runtime.getRuntime().exec(命令)中使用curl 命令时,我会得到一个错误响应,但是当我将命令 System.out.println出来,复制并粘贴到shell中执行,它就能正常工作。
System.out.println(command);
Runtime.getRuntime().exec(command);
为什么在运行时使用Runtime执行命令和在shell中执行命令会产生不同的结果。
感谢任何提示。
马丁
更新:
当我使用Runtime时,我得到的错误响应是:{"error":"未经授权"}
从命令中可以看出似乎不清楚。我没有遇到任何异常,curl命令运行正常,但json响应与上面发布的相同。
String APP_ID = "XXX";
String REST_API_KEY = "YYY";
String header = "-H \"X-Parse-Application-Id: " + APP_ID
+ "\" -H \"X-Parse-REST-API-Key: " + REST_API_KEY
+ "\" -H \"Content-Type: application/zip\" ";
public void post2Parse(String fileName) {
String outputString;
String command = "curl -X POST " + header + "--data-binary '@"
+ fileName + "' https://api.parse.com/1/files/" + fileName;
System.out.println(command);
Process curlProc;
try {
curlProc = Runtime.getRuntime().exec(command);
DataInputStream curlIn = new DataInputStream(
curlProc.getInputStream());
while ((outputString = curlIn.readLine()) != null) {
System.out.println(outputString);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}