<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

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


    網站導航:
     
    主站蜘蛛池模板: 久久精品国产亚洲AV网站 | 亚洲国产精品午夜电影| 一级毛片在线免费播放| 国产免费看插插插视频| 亚洲AV成人精品一区二区三区| 全免费一级午夜毛片| 亚洲精华国产精华精华液网站 | 亚洲国产精品综合久久网络| 亚洲日韩在线中文字幕综合 | 一级毛片免费不卡在线| 亚洲视频免费在线观看| 91九色老熟女免费资源站| 亚洲毛片基地4455ww| 巨胸喷奶水视频www网免费| 亚洲一本到无码av中文字幕| 国产精品二区三区免费播放心| MM1313亚洲国产精品| 亚洲精品国产va在线观看蜜芽| 日批视频网址免费观看| 亚洲性天天干天天摸| 成人爽A毛片免费看| 特级毛片免费观看视频| 亚洲精品自在在线观看| 67194国产精品免费观看| 精品国产日韩久久亚洲| 全亚洲最新黄色特级网站| 成全高清在线观看免费| 亚洲国产av美女网站| 日本免费人成黄页网观看视频| 成全视成人免费观看在线看| 亚洲网址在线观看| 免费精品国产自产拍观看| 日韩免费在线视频| 亚洲中文无码mv| 亚洲AV中文无码乱人伦下载| 成人免费视频网址| 三级黄色免费观看| 亚洲国产视频久久| 亚洲日本va在线视频观看| 青草草色A免费观看在线| 一级毛片在线播放免费|