我想在使用 Runtime.getRuntime().exec 的 java 程序中使用 curl
完整的代码片段如下,但我的问题归结为当我在 Runtime.getRuntime().exec( command ) 中使用 curl命令时收到错误响应,但是当我使用 System.out.println命令时,复制并粘贴它到一个shell并在那里执行它工作正常。
System.out.println(command);
Runtime.getRuntime().exec(command);
什么可能导致运行时 exec 和在 shell 中执行命令之间出现这种不同的结果。
感谢您的任何提示
马丁
更新:
我在使用运行时得到的错误响应是:{"error":"unauthorized"}
正如我从似乎不清楚的命令中看到的那样。我没有得到 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();
}
}