<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    HttpURLConnection請求數據流的寫入(write)和讀取(read)

    URLConnection類給應用程序和web資源之間架設起了通信的橋梁,這些web資源通常是通過url來標記的,本文將講述如何使用HttpURLConnection來訪問web頁面(發送數據流)和讀取數據流。

    在Servlet中對于需要用post方式(get會暴露參數)寫入參數的時候就用到了HttpURLConnection.

    請求的Servlet,也可以寫入main方法中進行測試
    package com;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @SuppressWarnings(
    "serial")
    public class IOServlet extends HttpServlet
    {
        
    /**
         * 對于主動請求其它接口的參數流寫入(POST方式)
         
    */

        
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException
        
    {
            System.out.println(
    "begin send");
            String inputParam 
    = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><page><username>愛心天使</usernaem><age>26</age></page>";

            URL url 
    = null;
            HttpURLConnection httpConn 
    = null;
            OutputStream output 
    = null;
            OutputStreamWriter outr 
    = null;

            url 
    = new URL("http://127.0.0.1:8888/iotest/ReadServlet");
            httpConn 
    = (HttpURLConnection) url.openConnection();
            HttpURLConnection.setFollowRedirects(
    true);
            httpConn.setDoOutput(
    true);
            httpConn.setRequestMethod(
    "POST");
            httpConn.setRequestProperty(
    "Content-Type""text/xml");
            httpConn.connect();
            output 
    = httpConn.getOutputStream();
            outr 
    = new OutputStreamWriter(output);
            
    // 寫入請求參數
            outr.write(inputParam.toString().toCharArray(), 0, inputParam
                    .toString().length());
            outr.flush();
            outr.close();
            System.out.println(
    "send ok");
            
    int code = httpConn.getResponseCode();
            System.out.println(
    "code " + code);
            System.out.println(httpConn.getResponseMessage());
            
            
    //讀取響應內容
            String sCurrentLine = ""
            String sTotalString 
    = ""
            
    if (code == 200)
            
    {
                java.io.InputStream is 
    = httpConn.getInputStream();
                BufferedReader reader 
    = new BufferedReader(
                        
    new InputStreamReader(is));
                
    while ((sCurrentLine = reader.readLine()) != null)
                    
    if (sCurrentLine.length() > 0)
                        sTotalString 
    = sTotalString + sCurrentLine.trim();
            }
     else
            
    {
                sTotalString 
    = "遠程服務器連接失敗,錯誤代碼:" + code;

            }

            System.out.println(
    "response:" + sTotalString);

        }


        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException
        
    {
            
    this.doGet(request, response);
        }


    }


    ReadServlet(相當于被請求的服務器):

    package com;

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.ServletInputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @SuppressWarnings(
    "serial")
    public class ReadServlet extends HttpServlet
    {

        
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
        
    {
            System.out.println(
    "begin read");
            ServletInputStream inStream 
    = request.getInputStream(); // 取HTTP請求流
            int size = request.getContentLength(); // 取HTTP請求流長度
            byte[] buffer = new byte[size]; // 用于緩存每次讀取的數據 
            byte[] in_b = new byte[size]; // 用于存放結果的數組
            int count = 0;
            
    int rbyte = 0;
            
    // 循環讀取 
            while (count < size)
            

                rbyte 
    = inStream.read(buffer); // 每次實際讀取長度存于rbyte中 sflj
                for (int i = 0; i < rbyte; i++)
                
    {
                    in_b[count 
    + i] = buffer[i];
                }

                count 
    += rbyte;
            }

            System.out.println(
    "result:" + new String(in_b,0,in_b.length));
            
            response.setContentType(
    "text/html");
            
    //注意響應中文數據時要設置
            response.setCharacterEncoding("GBK");
            PrintWriter out 
    = response.getWriter();
            
    //回與響應數據
            out.write("您已經請求成功,這是響應數據!");
        }

        
        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException
        
    {
            
    this.doGet(request, response);
        }


    }


    打開頁面:http://localhost:8888/iotest/IOServlet

    你會在后臺看到如下輸出說明你已經成功了:
    begin send
    send ok
    begin read
    result:
    <?xml version="1.0" encoding="UTF-8"?><page><username>愛心天使</usernaem><age>26</age></page>
    code 
    200
    OK
    response:您已經請求成功,這是響應數據
    !


    源碼下載:here

    posted on 2008-12-20 11:19 々上善若水々 閱讀(19092) 評論(1)  編輯  收藏

    評論

    # re: HttpURLConnection請求數據流的寫入(write)和讀取(read)  回復  更多評論   

    恩,不錯
    2008-12-20 22:58 | @beyondwcm

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 全免费一级午夜毛片| 亚洲精品乱码久久久久久蜜桃不卡 | 久久久免费观成人影院| 亚洲黄色网址大全| 国产jizzjizz免费看jizz| 久久最新免费视频| 亚洲AV无码一区二区三区牛牛| www.亚洲色图| 黄页网站免费观看| 国产V片在线播放免费无码 | 久久精品国产亚洲夜色AV网站| 免费无码A片一区二三区| jizz免费观看| 亚洲熟妇av午夜无码不卡| 亚洲中文字幕无码爆乳AV| 男人的好免费观看在线视频| 中文字幕视频在线免费观看| 亚洲 日韩 色 图网站| 亚洲国产精品成人久久| 国产不卡免费视频| 四虎在线免费视频| 亚洲日韩在线观看免费视频| 亚洲自偷自偷在线成人网站传媒| 亚洲国产精品成人久久| 亚洲精品和日本精品| 欧美日韩国产免费一区二区三区| 七色永久性tv网站免费看| 国产亚洲美女精品久久| 亚洲乱码一二三四区麻豆| 亚洲成AV人片在线播放无码| 免费欧洲毛片A级视频无风险| 国内精自视频品线六区免费 | 美女被免费网站视频在线| 亚洲A∨无码无在线观看| 婷婷综合缴情亚洲狠狠尤物| 97视频免费在线| 91人人区免费区人人| a级成人免费毛片完整版| 人妻巨大乳hd免费看| 在线视频亚洲一区| 亚洲国产成+人+综合|