<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 々上善若水々 閱讀(19093) 評論(1)  編輯  收藏

    評論

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

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产一级在线观看| 在线a毛片免费视频观看| 国产福利电影一区二区三区,亚洲国模精品一区 | 一区二区三区在线免费| 暖暖日本免费在线视频 | WWW免费视频在线观看播放| 国产偷国产偷亚洲高清日韩| 产传媒61国产免费| 伊人久久综在合线亚洲91| 岛国岛国免费V片在线观看| 亚洲色成人网站WWW永久| 免费人成激情视频在线观看冫| 亚洲国产无套无码av电影| 久久国产乱子伦精品免费看| 亚洲美女大bbbbbbbbb| 麻豆一区二区免费播放网站| 亚洲欧洲无码一区二区三区| 日韩中文无码有码免费视频 | 亚洲成av人在线视| 3d成人免费动漫在线观看| 亚洲一区欧洲一区| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲av无码专区国产乱码在线观看| 久久大香香蕉国产免费网站| 亚洲丰满熟女一区二区v| 在线免费观看污网站| 免费一级毛片在线播放放视频 | 无遮免费网站在线入口| 亚洲AV一区二区三区四区| 精品国产人成亚洲区| 69视频在线是免费观看| 亚洲精品乱码久久久久蜜桃| 亚洲精品无码专区2| 91香蕉国产线观看免费全集| 亚洲人片在线观看天堂无码| 亚洲综合国产精品第一页| 亚洲网站在线免费观看| 青青免费在线视频| 亚洲视屏在线观看| 啊灬啊灬别停啊灬用力啊免费看| 18禁超污无遮挡无码免费网站|