4

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();
    }
}
4

2 に答える 2

0

例外ではなく、Curl から Errorcode を取得したと思います。Curl API をもう一度確認してください。「User」などのパラメータが不足していることがわかると思います。

この回答に記載されているヒントのいくつかを確認してみてください。

于 2012-09-17T05:39:57.050 に答える