1. 程式人生 > >java 通過流讀取request請求引數

java 通過流讀取request請求引數

第一個是TestIOSServlet的內容,通過網路程式設計的方式

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         //該servlet用來模擬手機平臺傳送的json字串和md5字串。
        PrintWriter out = null;
        response.setContentType(CONTENT_TYPE);
        out = response.getWriter();
          String appMsg=request.getParameter("appMsg");//json字串
          HashMap requestXmlMap=new HashMap();
          if(appMsg!=null){
              appMsg=appMsg.replaceAll(""", "\"");;//轉成雙引號
          }
         log.info("傳過來的json字串:"+appMsg);
          try {
              requestXmlMap= (HashMap) JsonUtil.getMapFromJson(appMsg);
             String MD5=AutoMd5(requestXmlMap);
            // request.getRequestDispatcher("/servlet/AppIOSServlet?MD5="+MD5+"").forward(request, response);
            
              String strUrl="http://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/servlet/AppIOSServlet?MD5="+MD5+"";
                URL url = new URL(strUrl);
                URLConnection con = url.openConnection();
                con.setDoOutput(true);
                con.setUseCaches(false);
                con.setRequestProperty("content-type", "text/html");
                OutputStream outs=con.getOutputStream();
                outs.write(appMsg.getBytes("UTF-8"));
                InputStream in = con.getInputStream();
                BufferedReader read = new BufferedReader(new InputStreamReader(in, "UTF-8"));


                String outtext="";
                try {
                    String line="";
                    int i=0;
                    while ( (line=read.readLine())!= null ) {
                        outtext += line + "\n";
                        i++;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
                 log.info("json字串"+outtext);

                read.close();
                in.close();
                outs.close();
                
                out.print(outtext);

          }catch (Exception e) {
              e.printStackTrace();
          }finally{
              out.flush();
              out.close();
          }
        
    }

另外一個AppIOSServlet接受傳遞過來的引數

//伺服器端用request.getInputStream() 從流裡面讀JSON字串
          BufferedReader br = new BufferedReader(new InputStreamReader(
                    (ServletInputStream) request.getInputStream()));
            String line = null;
            StringBuffer sb = new StringBuffer();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            String appMsg=sb.toString();

傳遞過來的引數appMsg就從流裡面讀取到,最後返回的值仍會返回到TestIOSServlet中去