無線&移動互聯網技術研發

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

          HttpURLConnection(與web通信的橋梁)

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

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

          注:在這個實例開發中,我參考了很多資料,對我的幫助都很大,實例的成功要歸屬這些高手們,注釋主要參考下面這位仁兄。
          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
          主站蜘蛛池模板: 沙坪坝区| 汉阴县| 年辖:市辖区| 泰顺县| 浮梁县| 临漳县| 广宁县| 大姚县| 宁都县| 应城市| 新蔡县| 南丹县| 芦山县| 贺兰县| 称多县| 延边| 东乡| 定结县| 阜新| 汉阴县| 保山市| 德兴市| 漳平市| 正镶白旗| 山东| 汽车| 日土县| 安远县| 井陉县| 桂阳县| 育儿| 如皋市| 乐山市| 兴城市| 新宁县| 绥德县| 西青区| 海淀区| 定南县| 昭平县| 泸水县|