<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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲av无码片vr一区二区三区| 亚洲 综合 国产 欧洲 丝袜 | 亚洲黄色免费电影| 国产亚洲精品线观看动态图| 亚洲精品无码久久久久YW| 无码区日韩特区永久免费系列 | 亚洲国产日韩a在线播放| 19禁啪啪无遮挡免费网站| 亚洲福利视频一区二区三区| 免费无码中文字幕A级毛片| 国产亚洲欧洲Aⅴ综合一区| 瑟瑟网站免费网站入口| 亚洲第一黄片大全| 成年免费a级毛片| 国产亚洲精品精华液| 国产在线精品一区免费香蕉| 亚洲精品狼友在线播放| 最好免费观看高清在线| 久久青青成人亚洲精品| 2021在线永久免费视频| 亚洲一区在线观看视频| 无码人妻一区二区三区免费| 亚洲日韩国产AV无码无码精品| 国产精品麻豆免费版| aa毛片免费全部播放完整| 亚洲Av熟妇高潮30p| 99re这里有免费视频精品| 亚洲jjzzjjzz在线观看| 日韩一品在线播放视频一品免费| 特级毛片全部免费播放a一级| 国产亚洲av片在线观看播放 | 9277手机在线视频观看免费| 亚洲成a人片77777群色| 成人毛片免费观看视频在线| 亚洲av片在线观看| 亚洲香蕉在线观看| 亚洲精品无码久久久久AV麻豆| 一级黄色片免费观看| 西西人体44rt高清亚洲| 日韩亚洲国产高清免费视频| 免费国产黄线在线观看 |