<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)  編輯  收藏
    主站蜘蛛池模板: 国产国产成年年人免费看片| av成人免费电影| 全黄性性激高免费视频| 国产免费久久久久久无码| 久久精品亚洲中文字幕无码网站| 国产精品免费观看| 亚洲国产a∨无码中文777| 777爽死你无码免费看一二区| 亚洲中文无码永久免费| 亚洲自偷自偷在线制服| 2020久久精品国产免费| www一区二区www免费| 亚洲国产模特在线播放| 亚洲色欲久久久久综合网| 亚洲美女免费视频| 无码 免费 国产在线观看91| 亚洲精品视频在线观看免费| 免费人成网站在线高清| 免费观看激色视频网站bd| v片免费在线观看| 中文字幕亚洲男人的天堂网络| 亚洲欧洲一区二区三区| 国产免费丝袜调教视频| 岛国岛国免费V片在线观看 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲图片校园春色| 无码永久免费AV网站| 中国内地毛片免费高清| 精品久久久久亚洲| 亚洲一区二区三区免费在线观看 | 四虎影视在线永久免费观看| 久久aⅴ免费观看| 九九九精品视频免费| 亚洲日本久久久午夜精品| 亚洲国产天堂在线观看| 国产偷窥女洗浴在线观看亚洲| 毛片免费在线观看网址| 永久在线观看www免费视频| 你懂的在线免费观看| 一级毛片免费全部播放| 精品国产日韩亚洲一区91|