2015-05-14 82 views
-1

我有一個API的URL,如果直接在Chrome的高級休息客戶端運行,它的工作正常。我想讓這個URL從我自己的REST API代碼中觸發,它應該在高級休眠客戶端運行它並將結果存儲在變量中。 我該怎麼做?從java程序中的高級休息客戶端運行URL

+0

爲什麼你需要它運行在高級休息客戶端? – Romski

回答

0

使用Apache HttpClient庫https://hc.apache.org/或某些其他第三方開源庫以便於編碼。 如果您使用的是Apache httpClient lib,請google提供示例代碼。微小的例子就在這裏。

HttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet('http://site/MyrestUrl'); 
    HttpResponse response = client.execute(request); 
    BufferedReader rd = new BufferedReader (new InputStreamReader(response.getEntity().getContent())); 
    String line = ''; 
    while ((line = rd.readLine()) != null) { 
    System.out.println(line); 
    } 
    return (rd); 

如果使用第三方jar有任何限制,您也可以在純java中進行。

HttpURLConnection conn = null; 
    try { 

    URL url = new URL("http://site/MyRestURL"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setRequestMethod("GET"); 
    conn.setRequestProperty("Accept", ""); // add your content mime type 

    if (conn.getResponseCode() != 200) { 
     throw new RuntimeException("Failed : HTTP error code : " 
       + conn.getResponseCode()); 
    } 

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

    String output; 
    while ((output = br.readLine()) != null) { 
     System.out.println(output); 
    } 

    conn.disconnect(); 

    } catch (Exception e) { 

    e.printStackTrace(); 

    } 
+0

感謝您的答案。它幫助我與http的網址。但它不適用於https。我試圖尋找https的similer結構,但找不到任何。 你能幫我一些鏈接或採取https網址的結構。謝謝。 –

+0

請查看問題和答案。它可以幫助你,如果你想要證書解決方案。 http://stackoverflow.com/questions/1757295/using-https-with-rest-in-java –

+0

這是很好的解釋博客。 http://javaskeleton.blogspot.de/2010/07/avoiding-peer-not-authenticated-with.html –

0

在普通的java中,試試像這樣。我的建議請嘗試使用良好的開源rest/http客戶端。網絡中有很多例子。

String httpsUrl = "https://www.google.com/"; 
    URL url; 
    try { 
    url = new URL(httpsUrl); 
    HttpsURLConnection con = HttpsURLConnection)url.openConnection(); 
    } catch (MalformedURLException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    }