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

    評論

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

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲av无码偷拍在线观看| 好湿好大好紧好爽免费视频| 无码少妇精品一区二区免费动态| 国产精品69白浆在线观看免费 | 亚洲国产成人手机在线观看| 精品无码一级毛片免费视频观看| 亚洲av日韩片在线观看| 午夜免费国产体验区免费的| 日本妇人成熟免费中文字幕 | 亚洲AV综合色区无码一区| 亚洲精品无码少妇30P| 国外成人免费高清激情视频| 亚洲AV日韩AV永久无码色欲 | 久久国产乱子伦精品免费午夜| 久久乐国产精品亚洲综合| a级在线观看免费| 免费一级毛片不卡在线播放 | 国产午夜亚洲精品不卡| 免费一级毛片正在播放| 在线毛片片免费观看| 亚洲fuli在线观看| 日本免费在线中文字幕| 亚洲网站在线免费观看| 拍拍拍又黄又爽无挡视频免费| 日韩亚洲翔田千里在线| 亚洲色婷婷综合久久| jizz免费一区二区三区| 亚洲第一精品在线视频| 成年女人免费碰碰视频| a级毛片免费高清视频| 亚洲一区免费观看| 国产免费黄色大片| 人人玩人人添人人澡免费| 亚洲中字慕日产2021| 亚洲成人影院在线观看| 91精品国产免费| 亚洲综合一区二区精品导航| 成人人观看的免费毛片| 国产精品免费看久久久香蕉| 亚洲精品网站在线观看你懂的| 国产一级高清免费观看|