2017-06-22 24 views
2

データを持つウェブサイトにヒットするためにcURLを実行するJavaを実行しようとしていますが、これは機能しています。JavaがcURLを実行してウェブサイトのページの結果を返します

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName)); 

PageURLとProjectName変数を送信しています。

WebページからJSONが出力されます。

ウェブサイトで表示されているこのJSONをキャプチャしてJavaで使用するにはどうすればよいですか?

+0

「HttpClient」などのJava HTTPクライアントを使用する方が簡単かもしれません。 –

+0

ああ...私はグーグルにする必要があります。私はあなたが言うことができるようにJavaをよく知っていません。ありがとう!私はHttpClientの仕組みを見ていきます! –

+0

Javaに組み込まれた 'Http [s] URLConnection'クラス。どちらの方法でJSONテキストを取得したら、おそらくJSONパーサーが必要です。 https://stackoverflow.com/questions/2591098/how-to-parse-json-in-javaには27の回答があり、いくつかは高く評価されています。 –

答えて

0

プロセスから入力ストリームを読み取る必要があります。あなたはちょうどあなたのようなものを使用して、おそらくオフに優れているウェブサイトに話しする方法を探している場合は、このような何かは、

しかしこれは、両方のケースで完全な結果を印刷するJava 8

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName)); 

//Java 8 version 
String result = new BufferedReader(
          new InputStreamReader(pr.getInputStream())) 
           .lines() 
           .collect(Collectors.joining("\n")); 


//Older version than java 8 
BufferedReader response = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
StringBuilder result = new StringBuilder(); 
String s; 
while((s = response.readLine()) != null) { 
    result.append(s); 
} 
System.out.println(result.toString()); 

//You then need to close the BufferedReader if not using Java 8 
response.close(); 

使用して動作するはずですHttpClientまたはOKHttp。

JSONを取得している場合は、Google GSONのようにオブジェクトに解析することをおすすめします。 How to parse JSON in Java

+0

入力いただきありがとうございます。申し訳ありませんが、このウェブサイトのコメントにコードを投稿する方法を理解できません。私はこれで終わりましたが、私はJSONを解析するためにそれに取り組む必要があります。 'code'ランタイムrt = Runtime.getRuntime(); プロセスpr = rt.exec( "curl -s -S http://signetprojects.careyweb.com/testcode/ClariFai.cfm?PageName=" + $(Page.Name)+ "&ProjectName =" + $(ProjectName) ); BufferedReader br = new BufferedReader(新しいInputStreamReader(pr.getInputStream())); 文字列入力。 入力= br.readLine(); System.out.println(入力); –

+0

プロセスで.close()または.destroy()を使用する必要がありますか?私はいくつかの奇妙な結果を得ています。これらを管理し、使用後にシャットダウンする必要があるのだろうかと思います。 –

+0

@ChadGray投稿を少し更新します。投稿したJava 8の方法を使用しない場合は、読者を閉じる必要があります。 JSONを読むために、私が下に置いたリンクを使用することをお勧めします。そこにいくつかの優れた答えがあります。 – Asthor

0

私は答えとして投稿すると思いますが、これはウェブサイトが返すテキストの最初の行を出力します。今私はJSONを解析する方法を学ぶ必要があります。私はそのようなJava初心者です...皆のおかげで助けて!

Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec("curl -s -S 
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName)); 

BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream())); 

String response; 

response = br.readLine(); 
System.out.println(response); 
関連する問題