2017-06-22 26 views
2

我想運行一些Java運行cURL命中網站的數據,這是工作。Java運行cURL並返回網站頁面結果

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

cURL正在擊中本網站併發送PageName和ProjectName變量。

網頁輸出一些JSON。

如何捕獲該網站顯示的這個JSON並在我的Java中使用它?

+0

它可能更容易使用Java HTTP客戶端,如「HttpClient」 –

+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,我會建議類似谷歌GSON的東西來解析它的對象。關於如何解析JSON有一個很好的帖子How to parse JSON in Java

+0

感謝您的意見。抱歉,我無法弄清楚如何在本網站的評論中發佈代碼。我結束了這一點,但我將需要繼續努力解析JSON。 'code' Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(「curl -s -S http://signetprojects.careyweb.com/testcode/ClariFai.cfm?PageName=」+ $(Page.Name)+「&ProjectName =」+ $(ProjectName) ); BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream())); 字符串輸入; input = 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);