<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 100  文章 - 50  trackbacks - 0
    <2014年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我收藏的一些文章!

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    HTTP POST請求最常見的用途是發(fā)送表單參數(shù)到服務(wù)器。除了發(fā)送表單數(shù)據(jù),還可以使用POST的消息Body體發(fā)送各種數(shù)據(jù)(如純文本、XML文檔等)。本文講述如何用Java將數(shù)據(jù)寫入POST請求的Body體,已經(jīng)在servlet獲取傳過來的數(shù)據(jù)。
    package login;

    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;


    public class RequestPostTest {

     public static void main(String[] args) throws Exception{
      //發(fā)起post請求
      String urlString="http://localhost:8080/PostDemo/login";
      URL connectURL = new URL(urlString);
      HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();
      conn.setReadTimeout(100000);
            conn.setConnectTimeout(100000);
      conn.setDoInput(true);
      conn.setDoOutput(true);
      conn.setUseCaches(false);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Connection", "Keep-Alive");

      conn.setRequestProperty("content-type", "text/html");//這行很重要,如果不設(shè)置的話,后面解析xml流的話,會報:Caused by: org.xml.sax.SAXParseException: Premature end of file.

       // 得到請求的輸出流對象 
            OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); 
            // 把數(shù)據(jù)寫入請求的Body 
            out.write("<?xml version='1.0' encoding='UTF-8'?><trans><tran><requestId>111111</requestId><orderNo>22222</orderNo></tran><tran><requestId>aaaa</requestId><orderNo>bbbb</orderNo></tran><tran><requestId>cccccc</requestId><orderNo>ddddd</orderNo></tran></trans>"); 
      out.flush();
      out.close();

      //接收發(fā)起請求后由服務(wù)端返回的結(jié)果
      int read;
      StringBuffer inputb = new StringBuffer();
      InputStream is = conn.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(is, "UTF-8");
       while ((read=inputStreamReader.read())>=0) {
                 inputb.append( (char) read);
             }
       System.out.println(inputb.toString());
     }
    }

    獲取前段發(fā)過來的post數(shù)據(jù)

    package login;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletInputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class Login extends HttpServlet {
     /**
      *
      */
     private static final long serialVersionUID = -5376047309978396611L;

     public void service(HttpServletRequest req, HttpServletResponse res)
       throws IOException {
      this.doPost(req,res);
     }

     public void doGet(HttpServletRequest request, HttpServletResponse res) throws IOException{
      this.doPost(request,res);
     }
     
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
      // 測試
      try {
       response.setContentType("text/html; charset=UTF-8");
       PrintWriter out = response.getWriter();
       out.println("SUCCESS");
       ServletInputStream in = request.getInputStream();
       String str = readLine(in);// 這里是前臺發(fā)起的所有參數(shù)的值,包括二進(jìn)制形式的文件和其它形式的文件
       out.println(str);
       out.flush();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      return;
     }

     /**
      * Read the next line of input.
      *
      * @return a String containing the next line of input from the stream, or
      *         null to indicate the end of the stream.
      * @exception IOException
      *                if an input or output exception has occurred.
      */
     private String readLine(ServletInputStream in) throws IOException {
      byte[] buf = new byte[8 * 1024];
      StringBuffer sbuf = new StringBuffer();
      int result;
      // String line;

      do {
       result = in.readLine(buf, 0, buf.length); // does +=
       if (result != -1) {
        sbuf.append(new String(buf, 0, result, "UTF-8"));
       }
      } while (result == buf.length); // loop only if the buffer was filled

      if (sbuf.length() == 0) {
       return null; // nothing read, must be at the end of stream
      }

      // Cut off the trailing \n or \r\n
      // It should always be \r\n but IE5 sometimes does just \n
      int len = sbuf.length();
      if (sbuf.charAt(len - 2) == '\r') {
       sbuf.setLength(len - 2); // cut \r\n
      } else {
       sbuf.setLength(len - 1); // cut \n
      }
      return sbuf.toString();
     }
    }


    posted on 2014-12-10 23:30 fly 閱讀(6533) 評論(0)  編輯  收藏
    主站蜘蛛池模板: 亚洲国产精品综合久久2007| 亚洲伊人久久成综合人影院| 亚洲精品自产拍在线观看动漫| jizz免费在线影视观看网站| 亚洲国产精品成人久久蜜臀| 男男黄GAY片免费网站WWW | 最近2019免费中文字幕6| 亚洲va中文字幕无码久久不卡| 国产午夜无码片免费| 亚洲va无码专区国产乱码| 久久香蕉国产线看免费| 亚洲视频一区在线| 手机在线免费视频| 狠狠入ady亚洲精品| 亚洲国产精品一区二区三区在线观看| 亚洲香蕉免费有线视频| 亚洲性无码AV中文字幕| 国产中文字幕免费观看| 一级有奶水毛片免费看| 亚洲欧洲日产国产综合网| 在线看片韩国免费人成视频| 亚洲精品无码国产片| 亚洲精品人成无码中文毛片| 中文精品人人永久免费| 亚洲国产成人精品无码区在线秒播 | 阿v视频免费在线观看| 亚洲熟妇无码乱子AV电影| 99久久精品免费精品国产| 亚洲 日韩 色 图网站| 亚洲国产一区视频| 伊人久久免费视频| 亚洲AV无码一区二区三区网址| 亚洲精品无码激情AV| 67194国产精品免费观看| 噜噜综合亚洲AV中文无码| 国产亚洲精品看片在线观看 | 免费看又黄又无码的网站| 亚洲日韩久久综合中文字幕| 国产成人99久久亚洲综合精品| 免费无码又爽又刺激高潮视频| 色网站在线免费观看|