URLConnection調用介面,urlconnection調用

來源:互聯網
上載者:User

URLConnection調用介面,urlconnection調用

寫在前面:

  項目是java web,jdk1.4,weblogic 7;對方.net系統,用wcf開發的介面。對方提供介面url地址,以及說明用post方式去調用,無需傳遞參數,直接返回json array(json數組格式的資料)

  調用介面的方法有很多中,架構調用,ajax調用,urlConnection等等.由於項目需要,需要遠程調用對方.net系統的介面,其介面是用wcf開發的,然後我們這邊的系統是java,並且jdk是1.4,所以主流的一些架構調用已經用不了了,一般要jdk1.6以上才可以。說到這裡,axis是可以適用於jdk1.4的,但是當採用用戶端產生代碼的方式的時候,我產生的類有缺少,不知道為啥,果斷放棄;然後由於是跨域調用介面(也就是雙方的系統不在一個伺服器裡面),並且需要post方式去訪問,故ajax的方式也不行,因為ajax不支援跨域,當然利用jsonp是可以跨域的,但是它是採用get方式訪問的。在掙紮嘗試了兩三天后,求助貼吧大神,大神跟我語音,讓我用httpurlconnection的方式去訪問,也就是URLConnection調用介面。之後,我又拿出了傳智播客的webservice的視頻筆記,上面也有提及到採用URLConnection調用介面,於是我就打算試試。成功啦......真是強大哈。。。(貌似這種方式可以適用於各種介面的調用,也可以調用webservice,大家都可以試一試,遇到問題不要怕,啊哈哈哈。。。。。)

  

  1.準備工作:

  對於URLConnection調用介面貌似不需要匯入任何相關的jar包,這個要根據項目來定。這裡返回的是json數組的字串,所以這裡我要用到json相關的jar來進行擷取。匯入json的jar包就可以了。

  代碼:可以自己先寫一個main java程式來串連測試一下,然後再放到具體的項目上去進行調用。

 

public static void main(String[] args) {                //建立url地址 這裡的url地址我是亂寫的  你們填寫自己的需要調用的介面就好        URL url = new URL("http://10.10.10.83/GetProjectNameService/GetProjectNameService.svc/getProjectName");        //開啟串連        URLConnection conn = url.openConnection();        //轉換成HttpURL        HttpURLConnection httpConn = (HttpURLConnection) conn;                //連線逾時的相關設定   看相關部落格說要加上 就沒有去掉        System.setProperty("sun.net.client.defaultConnectTimeout", "30000");        System.setProperty("sun.net.client.defaultReadTimeout", "30000");                //開啟輸入輸出的開關        httpConn.setDoInput(true);        httpConn.setDoOutput(true);        //post提交不能有緩衝        httpConn.setUseCaches(false);        //設定傳送的內容類型是可序列化的java對象  如果不需要傳遞參數 就不需要寫就行了        //httpConn.setRequestProperty("Content-type", "application/x-java-serialized-object");        //httpConn.setRequestProperty("Content-type", "UTF-8");        //佈建要求的頭資訊    這裡的請求類型是根據自己需要傳遞的參數來決定的          //httpConn.setRequestProperty("Content-type", "text/xml;charset=UTF-8");                //佈建要求方式        httpConn.setRequestMethod("POST");        //獲得輸出資料流           OutputStream out = httpConn.getOutputStream();        //發送資料  即使什麼參數也不用傳遞 也要發送資料 穿空的字串就好了        ObjectOutputStream objOut = new ObjectOutputStream(out);        objOut.writeObject(new String(""));        objOut.flush();        objOut.close();                //獲得輸入資料流   在這裡獲得輸入資料流的時候 就已經預設執行了connect()方法  故上一步可以省略這個方法        InputStream in = httpConn.getInputStream();        //判斷請求成功        StringBuffer sb = new StringBuffer();        JSONArray jarr = null;        String str = "";        if(httpConn.getResponseCode() == 200){            
//使用輸入資料流的緩衝區 這裡加入UTF-8可以解決亂碼的問題 BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8")); String line = null; //讀取輸入資料流 while((line = reader.readLine()) != null){ sb.append(line); } str = sb.toString(); System.out.println("返回結果:"+str); //由於對方返回的結果是json數組格式的字串 故將json數組格式的字串轉為json數組 //可根據自己項目的需要來轉為需要的類型 具體方法 可以百度 jarr = new JSONArray(str); //遍曆列印 for(int i=0;i<jarr.length();i++){ System.out.println(jarr.getString(i)); }} }

 

 

 

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.