Runtime.getRuntime().exec を使用して Java プログラム内で curl を使用したい
完全なスニペットは以下にありますが、私の問題は、Runtime.getRuntime().exec( command ) で curlコマンドを使用するとエラー応答が返されることですが、 System.out.printlnコマンドをコピーして貼り付けます。それをシェルに実行し、そこで実行すると正常に動作します。
System.out.println(command);
Runtime.getRuntime().exec(command);
ランタイム exec とシェルでのコマンドの実行との間で、この異なる結果が生じる原因は何ですか。
ヒントをありがとう
マーティン
更新:
ランタイムの使用時に得られるエラー応答は次のとおりです: {"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();
}
}