我們在調用遠端接口時,有時候用httpClient。當然我們也可以用java自帶的一個類來做這個操作,這裡有一個簡單的例子:
<code>package</code> <code>com.hanchao.test;</code>
<code>import</code> <code>java.io.BufferedReader;</code>
<code>import</code> <code>java.io.InputStream;</code>
<code>import</code> <code>java.io.InputStreamReader;</code>
<code>import</code> <code>java.net.HttpURLConnection;</code>
<code>import</code> <code>java.net.URL;</code>
<code>import</code> <code>net.sf.json.JSONObject;</code>
<code>/***********************</code>
<code> </code><code>* @author:han </code>
<code> </code><code>* @version:1.0 </code>
<code> </code><code>* @created:2013-9-23 </code>
<code> </code><code>***********************</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>TestHttpConnection1 {</code>
<code> </code><code>/**</code>
<code> </code><code>* 根據url遠端調用相關的接口</code>
<code> </code><code>* *******************</code>
<code> </code><code>* @author: han</code>
<code> </code><code>* 2013-9-23</code>
<code> </code><code>* @param url</code>
<code> </code><code>* @return</code>
<code> </code><code>* @throws Exception</code>
<code> </code><code>*/</code>
<code> </code><code>public</code> <code>static</code> <code>String getData(String urlStr) </code><code>throws</code> <code>Exception {</code>
<code> </code>
<code> </code><code>System.out.println(</code><code>" =========== HttpConnectionUtil連接配接的位址:"</code> <code>+ urlStr);</code>
<code> </code><code>StringBuffer answer = </code><code>new</code> <code>StringBuffer();</code>
<code> </code><code>InputStream is = </code><code>null</code><code>;</code>
<code> </code><code>InputStreamReader isr = </code><code>null</code><code>;</code>
<code> </code><code>BufferedReader br = </code><code>null</code><code>;</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>if</code><code>(urlStr == </code><code>null</code> <code>|| urlStr.equals(</code><code>""</code><code>)) {</code>
<code> </code><code>return</code> <code>""</code><code>;</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>URL url = </code><code>new</code> <code>URL(urlStr);</code>
<code> </code><code>/**</code>
<code> </code><code>* url.openConnection()</code>
<code> </code><code>* 傳回一個 URLConnection 對象,它表示到 URL 所引用的遠端對象的連接配接。</code>
<code> </code><code>每次調用此 URL 的協定處理程式的 openConnection 方法都打開一個新的連接配接。</code>
<code> </code><code>*/</code>
<code> </code><code>HttpURLConnection connection = (HttpURLConnection) url.openConnection();</code>
<code> </code><code>* 将讀逾時設定為指定的逾時值,以毫秒為機關。用一個非零值指定在建立到資源的連接配接後從 Input 流讀入時的逾時時間。</code>
<code> </code><code>* 如果在資料可讀取之前逾時期滿,則會引發一個 java.net.SocketTimeoutException。逾時時間為零表示無窮大逾時。</code>
<code> </code><code>此方法的一些非标準實作會忽略指定的逾時。要檢視讀入逾時設定,請調用 getReadTimeout()。</code>
<code> </code><code>connection.setReadTimeout(</code><code>30000</code><code>);</code>
<code> </code><code>//設定 URL 請求的方式</code>
<code> </code><code>connection.setRequestMethod(</code><code>"GET"</code><code>);</code>
<code> </code><code>* 設定一個指定的逾時值(以毫秒為機關),該值将在打開到此 URLConnection 引用的資源的通信連結時使用。</code>
<code> </code><code>* 如果在建立連接配接之前逾時期滿,則會引發一個 java.net.SocketTimeoutException。逾時時間為零表示無窮大逾時。</code>
<code> </code><code>此方法的一些非标準實作可能忽略指定的逾時。要檢視連接配接逾時設定,請調用 getConnectTimeout()。</code>
<code> </code><code>connection.setConnectTimeout(</code><code>30000</code><code>);</code>
<code> </code><code>* 将此 URLConnection 的 doOutput 字段的值設定為指定的值。</code>
<code> </code><code>URL 連接配接可用于輸入和/或輸出。如果打算使用 URL 連接配接進行輸出,</code>
<code> </code><code>則将 DoOutput 标志設定為 true;如果不打算使用,則設定為 false。預設值為 false</code>
<code> </code><code>connection.setDoOutput(</code><code>true</code><code>);</code>
<code> </code><code>* 打開到此 URL 引用的資源的通信連結(如果尚未建立這樣的連接配接)。</code>
<code> </code><code>如果在已打開連接配接(此時 connected 字段的值為 true)的情況下調用 connect 方法,則忽略該調用。</code>
<code> </code><code>URLConnection 對象經曆兩個階段:首先建立對象,然後建立連接配接。</code>
<code> </code><code>在建立對象之後,建立連接配接之前,可指定各種選項(例如,doInput 和 UseCaches)。</code>
<code> </code><code>連接配接後再進行設定就會發生錯誤。連接配接後才能進行的操作(例如 getContentLength),如有必要,将隐式執行連接配接。</code>
<code> </code><code>connection.connect();</code>
<code> </code><code>is = connection.getInputStream();</code>
<code> </code><code>isr = </code><code>new</code> <code>InputStreamReader(is,</code><code>"UTF-8"</code><code>);</code>
<code> </code><code>br = </code><code>new</code> <code>BufferedReader(isr);</code>
<code> </code><code>if</code><code>(br != </code><code>null</code><code>) {</code>
<code> </code><code>/*String readString = null;</code>
<code> </code><code>while((readString = br.readLine()) != null) {</code>
<code> </code><code>answer.append(readString);</code>
<code> </code><code>}*/</code>
<code> </code><code>for (String oneline = null;(oneline = br.readLine()) != null; answer.append("\n")) {</code>
<code> </code><code>System.out.println(" ============== :" + oneline + "\n");</code>
<code> </code><code>answer.append(oneline);</code>
<code> </code><code>}</code>
<code> </code><code>connection.disconnect();</code>
<code> </code><code>System.out.println(" =========== HttpConnectionUtil斷開連結 =========");</code>
<code> </code><code>} catch (Exception e) {</code>
<code> </code><code>System.out.println(" ================ 連接配接逾時。。。。");</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>} finally {</code>
<code> </code><code>if(br != null) {</code>
<code> </code><code>try {</code>
<code> </code><code>br.close();</code>
<code> </code><code>} catch (Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>return answer.toString().trim();</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>* 測試main方法</code>
<code> </code><code>* 2013-9-24</code>
<code> </code><code>* @param args</code>
<code> </code><code>public static void main(String[] args) {</code>
<code> </code><code>String str = null;</code>
<code> </code><code>try {</code>
<code> </code><code>* test1</code>
<code> </code><code>//str = getData("http://www.baidu.com");</code>
<code> </code><code>* test2</code>
<code> </code><code>// str = getData("http://localhost:8080/httpClient/ajax.jspx?type=car");</code>
<code> </code><code>*test3</code>
<code> </code><code>str = getData(</code><code>"http://localhost:8080/httpClient/ajax.jspx?type=json"</code><code>);</code>
<code> </code><code>//str為json字元串</code>
<code> </code><code>JSONObject json = JSONObject.fromObject(str);</code>
<code> </code><code>System.out.println(</code><code>" ========= jsonResult:"</code> <code>+ </code><code>",key1:"</code> <code>+ json.get(</code><code>"key1"</code><code>) + </code><code>",key2:"</code> <code>+ json.get(</code><code>"key2"</code><code>) + </code><code>",key3:"</code> <code>+ json.get(</code><code>"key3"</code><code>));</code>
<code> </code><code>System.out.println(</code><code>" --------------- result:"</code> <code>+ str);</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code>}</code>
下載下傳例子:httpConnection
<b> 本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/1301189</b><b>,如需轉載請自行聯系原作者</b>
<b></b>