posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          HttpURLConnection(與web通信的橋梁)

          Posted on 2009-05-22 23:31 Gavin.lee 閱讀(1442) 評論(1)  編輯  收藏 所屬分類: java SE & EE
          java 對HTTP網絡協議的資源請求,java api上是這樣說的:“每個 HttpURLConnection 實例都可用于生成單個請求,但是其他實例可以透明地共享連接到 HTTP 服務器的基礎網絡。”

          說的再說都沒用,用途簡單一句話,java程序向web請求資源的。聽老前輩說我這個會有問題,說是有時候不能讀取完整數據。不過我是幸運的,用到現在沒出現問題,先不管了。

          注:在這個實例開發(fā)中,我參考了很多資料,對我的幫助都很大,實例的成功要歸屬這些高手們,注釋主要參考下面這位仁兄。
          http://www.aygfsteel.com/supercrsky/articles/247449.html

          2009年6月29日14:07:13 PS: 對編碼機制做了點改善
          package com.yixun.wap;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.OutputStream;
          import java.net.HttpURLConnection;
          import java.net.URL;
          /**
           * 
           * @descripte use java.net.HttpURLConnection to request resource form web.
           * 
          @author Gavin.lee
           * @date 2009-5-23 12:21:00
           * 
          @version 1.0
           
          */

          public class TransactionCenter {
              
          private URL url;
              
          private HttpURLConnection urlconn;

              String inencoding;
              String outencoding;
              
              
          public TransactionCenter(String inencoding, String outencoding) {
                  
          this.inencoding = inencoding;
                  
          this.outencoding = outencoding;
              }

              
              
          public String connect(String params, String postUrl) {
                  BufferedReader br 
          = null;
                  String response 
          = "", brLine = "";
                  
          try {
                      
          //params=URLEncoder.encode(params,"GB2312"); //use URLEncoder.encode for encode the params

                      url 
          = new URL(postUrl);
                      urlconn 
          = (HttpURLConnection) url.openConnection();
                      urlconn.setRequestProperty(
          "user-agent","mozilla/4.7 [en] (win98; i)");    //set request header 
                      urlconn.setRequestProperty("X-Forwarded-For""127.0.0.1");
                      urlconn.setConnectTimeout(
          30000);
                      urlconn.setReadTimeout(
          30000);
                      urlconn.setRequestMethod(
          "POST");     // request method, default GET
                      urlconn.setUseCaches(false);    //Post can not user cache
                      urlconn.setDoOutput(true);    //set output from urlconn
                      urlconn.setDoInput(true);    //set input from urlconn
                      OutputStream out = urlconn.getOutputStream();
                      out.write(params.getBytes(outencoding));
                      out.flush();
                      out.close();    
          // output stream close,That's means need not to post data to this outputstream

                      br 
          = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), inencoding));
                      
          while((brLine = br.readLine())!=null)
                          response 
          =(new StringBuilder(String.valueOf(response))).append(brLine).toString();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }
           finally {
                      
          try {
                          
          if(br != null{
                              br.close();
                          }

                      }
           catch (IOException e) {
                          System.out.println(
          "input stream close fail");
                      }

                      urlconn.disconnect();
                  }

                  
          return response;
              }


              
          public static void main(String[] args) {
                  TransactionCenter tc 
          = new TransactionCenter("GBK""GBK");
                  String response 
          = tc.connect("c_id=10041&cpid=5&c_type=1&lotid=1&expect=08059","http://inter.boss.com/interface/client/requestwap.php?");
                  System.out.println(response);
              }

          }



          評論

          # re: HttpURLConnection(與web通信的橋梁)  回復  更多評論   

          2012-09-26 09:36 by 12
          11111
          主站蜘蛛池模板: 色达县| 南靖县| 黑水县| 武鸣县| 巴彦淖尔市| 于都县| 辽宁省| 宁陕县| 子洲县| 田东县| 孟州市| 璧山县| 武乡县| 海伦市| 新和县| 黄浦区| 奉新县| 海晏县| 松原市| 金溪县| 武隆县| 营山县| 曲麻莱县| 吉木乃县| 姜堰市| 新沂市| 河曲县| 奇台县| 茂名市| 焦作市| 朝阳区| 罗甸县| 子洲县| 河南省| 桂阳县| 恭城| 伊川县| 桃园县| 阜宁县| 扶风县| 邹城市|