我们在调用远程接口时,有时候用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>