ターミナルからとJavaでcurlコマンドを実行すると、異なる結果が得られるのはなぜですか?

curlJavaまたはその派生物で実行するための多くの提案を学びましたたとえば、Javaでのcurlコマンド、Javaでのcurlコマンドの使用などです。

また、DOIを使用して特定のリソースのメタデータフェッチする方法を理解しましたこの命令から、Javaで小さなスニペットを使用してこのcurlコマンドを実行し、結果を処理することに非常に興味があります。

例を挙げましょう。URLはhttp://dx.doi.org/10.1016/j.immuni.2015.09.001です。

ターミナルからcurlコマンドを実行する

curl -LH "Accept: application/x-bibtex" http://dx.doi.org/10.1016/j.immuni.2015.09.001

出力は次のようになります

@article{Biswas_2015,
    doi = {10.1016/j.immuni.2015.09.001},
    url = {https://doi.org/10.1016%2Fj.immuni.2015.09.001},
    year = 2015,
    month = {sep},
    publisher = {Elsevier {BV}},
    volume = {43},
    number = {3},
    pages = {435--449},
    author = {Subhra~K. Biswas},
    title = {Metabolic Reprogramming of Immune Cells in Cancer Progression},
    journal = {Immunity}

Groovyでこのcurlコマンドを実行する

このサイトで共有しているいくつかのコードをリサイクルして、私は以下のようにプロセスを書きました。

Map result = [:]
String command = "curl -LH 'Accept: application/x-bibtex' http://dx.doi.org/10.1016/j.immuni.2015.09.001"
Process process = Runtime.getRuntime().exec(command)
InputStream stream = process.getInputStream()
result.put("data", stream.text)
process.destroy()

私が得ているのは、BibTeX形式のフォームではなく、ページ全体がHTMLであるということです。

問題は、ここで何が間違っているのかということです。その問題を経験したことがある人はいますか?

cfrick

使用execはシェルではありません-シェルを引用することはできませんし、引用する必要もありません。それはありません。さらにexec(String)、デフォルトで文字列トークナイザー(基本的に空白で分割される)を使用して、少し高度なユースケースでは特に役に立たないようにします。

ほとんどの場合、コマンドに文字列配列(+ args)を受け入れるバージョンを使用することをお勧めします。

効果的に呼び出すと、次のようになります(コマンドは空白で分割されることに注意してください。その\'ため、シェルにそれを無視させていました)。

# curl -LH \'Accept: application/x-bibtex\' http://dx.doi.org/10.1016/j.immuni.2015.09.001
curl: (6) Could not resolve host: application
... HTML ...

groovyを使用した最短ルートは次のようになります(exec文字列の配列を渡すためのバージョンもあることに注意してください)。

groovy:000> ["curl", "-LH", "Accept: application/x-bibtex", "http://dx.doi.org/10.1016/j.immuni.2015.09.001"].execute().text
===> @article{Biswas_2015,
9doi = {10.1016/j.immuni.2015.09.001},
9url = {https://doi.org/10.1016%2Fj.immuni.2015.09.001},
9year = 2015,
9month = {sep},
9publisher = {Elsevier {BV}},
9volume = {43},
9number = {3},
9pages = {435--449},
9author = {Subhra~K. Biswas},
9title = {Metabolic Reprogramming of Immune Cells in Cancer Progression},
9journal = {Immunity}
}

「シェルイズム」が必要な場合は、["sh", "-c", command]代わりに使用してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列を `printf`で結合すると、ターミナルとスクリプトで異なる結果が得られるのはなぜですか?

分類Dev

配列を `printf`で結合すると、ターミナルとスクリプトで異なる結果が得られるのはなぜですか?

分類Dev

異なるターミナルパスからWineアプリケーションを実行すると、異なる結果が得られますか?

分類Dev

ターミナル(ルートとして)または/etc/init.d(または/etc/rc.local)を介してプログラムを実行すると、2つの異なる結果が得られるのはなぜですか?

分類Dev

コマンドプロンプトとPowerShellがターミナルとは異なる出力結果を表示するのはなぜですか?

分類Dev

Linuxでターミナルでsysctlコマンドを実行すると何が得られますか

分類Dev

ボタンクリックではなくTextChangedイベントで同じコードを実行すると、異なる結果が得られるのはなぜですか?

分類Dev

異なるPythonバージョンで同じコードを実行すると異なる出力が得られるのはなぜですか?

分類Dev

jpanelを使用すると、コンピューターごとに異なる結果が得られるのはなぜですか?

分類Dev

asyncioを使用したコルーチンでリスト内包表記を使用すると、異なる結果が得られるのはなぜですか?

分類Dev

バッチファイルを実行すると異なる結果が得られるのはなぜですか?

分類Dev

このHaskellプログラムを-fllvmでコンパイルすると異なる結果が得られるのはなぜですか?

分類Dev

このDeepSpeechpythonプログラムの結果が、コマンドラインインターフェイスから得られる結果と異なるのはなぜですか?

分類Dev

LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?

分類Dev

エンティティコンストラクタでセッターまたはフィールドキーを使用すると、異なる結果が得られるのはなぜですか?

分類Dev

このawkコマンドをevalでネストすると、実行とは異なる結果が生成されるのはなぜですか?

分類Dev

2台のマシンでCでrand()を同時に実行すると、同じ結果が得られるのはなぜですか?

分類Dev

D3jsで同じコードで異なる結果が得られるのはなぜですか?

分類Dev

ループを実行するたびに同じ結果が得られないのはなぜですか?

分類Dev

コード内の関数でポインタを出力すると、ポインタを直接出力すると異なる結果が得られるのはなぜですか?

分類Dev

floatを追加すると、その実行方法に応じて異なる結果が得られるのはなぜですか

分類Dev

長い結果が得られるコマンドを入力すると、ターミナルに完全な結果が表示されない

分類Dev

[と[[を使用すると、(異なる結果ではなく)同じ結果が得られることがあるのはなぜですか?

分類Dev

ターミナルでのコピー/貼り付けでコマンドが実行されることがあるのはなぜですか?

分類Dev

data.table形式でコードを2〜3回実行すると、参照(:=)への割り当てで異なる結果が得られるのはなぜですか?

分類Dev

この単純なRループを「ベクトル化」すると異なる結果が得られるのはなぜですか?

分類Dev

printステートメントをコメントアウトしてこれを実行すると、異なる結果が得られるのはなぜですか?

分類Dev

(。)演算子を使用して構造体メンバーの値を出力すると、->演算子とは異なる結果が得られます。なぜですか?

分類Dev

追加と連結で異なる結果が得られるのはなぜですか?

Related 関連記事

  1. 1

    配列を `printf`で結合すると、ターミナルとスクリプトで異なる結果が得られるのはなぜですか?

  2. 2

    配列を `printf`で結合すると、ターミナルとスクリプトで異なる結果が得られるのはなぜですか?

  3. 3

    異なるターミナルパスからWineアプリケーションを実行すると、異なる結果が得られますか?

  4. 4

    ターミナル(ルートとして)または/etc/init.d(または/etc/rc.local)を介してプログラムを実行すると、2つの異なる結果が得られるのはなぜですか?

  5. 5

    コマンドプロンプトとPowerShellがターミナルとは異なる出力結果を表示するのはなぜですか?

  6. 6

    Linuxでターミナルでsysctlコマンドを実行すると何が得られますか

  7. 7

    ボタンクリックではなくTextChangedイベントで同じコードを実行すると、異なる結果が得られるのはなぜですか?

  8. 8

    異なるPythonバージョンで同じコードを実行すると異なる出力が得られるのはなぜですか?

  9. 9

    jpanelを使用すると、コンピューターごとに異なる結果が得られるのはなぜですか?

  10. 10

    asyncioを使用したコルーチンでリスト内包表記を使用すると、異なる結果が得られるのはなぜですか?

  11. 11

    バッチファイルを実行すると異なる結果が得られるのはなぜですか?

  12. 12

    このHaskellプログラムを-fllvmでコンパイルすると異なる結果が得られるのはなぜですか?

  13. 13

    このDeepSpeechpythonプログラムの結果が、コマンドラインインターフェイスから得られる結果と異なるのはなぜですか?

  14. 14

    LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?

  15. 15

    エンティティコンストラクタでセッターまたはフィールドキーを使用すると、異なる結果が得られるのはなぜですか?

  16. 16

    このawkコマンドをevalでネストすると、実行とは異なる結果が生成されるのはなぜですか?

  17. 17

    2台のマシンでCでrand()を同時に実行すると、同じ結果が得られるのはなぜですか?

  18. 18

    D3jsで同じコードで異なる結果が得られるのはなぜですか?

  19. 19

    ループを実行するたびに同じ結果が得られないのはなぜですか?

  20. 20

    コード内の関数でポインタを出力すると、ポインタを直接出力すると異なる結果が得られるのはなぜですか?

  21. 21

    floatを追加すると、その実行方法に応じて異なる結果が得られるのはなぜですか

  22. 22

    長い結果が得られるコマンドを入力すると、ターミナルに完全な結果が表示されない

  23. 23

    [と[[を使用すると、(異なる結果ではなく)同じ結果が得られることがあるのはなぜですか?

  24. 24

    ターミナルでのコピー/貼り付けでコマンドが実行されることがあるのはなぜですか?

  25. 25

    data.table形式でコードを2〜3回実行すると、参照(:=)への割り当てで異なる結果が得られるのはなぜですか?

  26. 26

    この単純なRループを「ベクトル化」すると異なる結果が得られるのはなぜですか?

  27. 27

    printステートメントをコメントアウトしてこれを実行すると、異なる結果が得られるのはなぜですか?

  28. 28

    (。)演算子を使用して構造体メンバーの値を出力すると、->演算子とは異なる結果が得られます。なぜですか?

  29. 29

    追加と連結で異なる結果が得られるのはなぜですか?

ホットタグ

アーカイブ