冷面閻羅

          低調做人&&高調做事
          隨筆 - 208, 文章 - 3, 評論 - 593, 引用 - 0
          數據加載中……

          HTTP請求發送XML數據

          ???? ?http請求發送一些簡單的數據,大家應該知道,直接在url后加"?參數名=參數值&參數名=參數值&",但是數據過多,這樣發送就不可以,不管post還是get數據量超過2m好像都不行.當數據量大的時候可以采用xml格式,發送,此時發送方法就要改一下,不能在url地址后面加參數了,這是要用到

          ?????????????????var?Http? = ? new ?ActiveXObject( " Microsoft.XMLHTTP " )?
          ????????????????????Http.open(
          " POST " ,GZURL, false )?
          ????????????????????Http.setRequestHeader(
          " CONTENT-TYPE " , " text/xml;?charset?=?gb2312 " );
          ?????????????????Http.send(message)?
          ?????? 在httpserver中接受?
          ????????request.setCharacterEncoding("GB2312");
          ????????ServletInputStream?inStream?
          =?request.getInputStream();

          ??????? 接受到的數據為一個流,流中包含xml數據,如果直接對流操作,轉化成string然后再操作就有些麻煩了.此時用jdom操作這個xml的流,直接生成xml對象
          SAXBuilder?sb?=?new?SAXBuilder();?//?新建立構造器
          ????????????doc?=?sb.build(inStream);
          ????????????Element?root?
          =?(Element)?doc.getRootElement();
          ??????? 對這個xml的doc對象操作,想必大家應該會吧!先得到根節點,然后再得到子節點.....

          posted on 2007-01-25 15:36 冷面閻羅 閱讀(8728) 評論(8)  編輯  收藏 所屬分類: javaajax

          評論

          # re: HTTP請求發送XML數據  回復  更多評論   

          不是2M吧 ,是2K , 又好像是4K, 反正沒2M那么夸張
          2007-01-25 23:20 | z.wei

          # re: HTTP請求發送XML數據  回復  更多評論   

          我記不請了在什么地方看,應該就是2m,如果是2k那也太小了吧
          2007-01-26 08:55 | 冷面閻羅

          # re: HTTP請求發送XML數據[未登錄]  回復  更多評論   

          是2K,不是2M。
          2007-01-26 13:45 | Tony

          # re: HTTP請求發送XML數據  回復  更多評論   

          是2K嗎,我使用的時候,GET時只有1K,POST時好像有4K。反正沒有2M那么多,要是那么多的話,我就不用那么煩了
          2007-02-01 10:25 | errorfun

          # re: HTTP請求發送XML數據[未登錄]  回復  更多評論   

          GET的參數長度為2K的字節(漢字為1024個),而POST是沒有的。造成這種區別的原因是GET是連接后提交,而POST則是連接前提交。這么說吧,就是GET在切換超鏈接的時候將參數一起帶過去的;而POST則是先跟目標url建立起一條數據通道,將數據提交過去,然后再切換到目標url的。區別的實質是有沒有在提交時建立一條數據通道。
          從它們的名字也可以看出這種關系:GET是指目標url主動去“拿”,因為是顯性給傳過去了;而POST則是走“郵箱”郵過去了,隱形傳遞,因此也就沒有大小限制。呵呵,不知這么說是否貼切。
          由于數據通道的存在,因此POST提交時會自動地將數據進行“iso-8859-1”的編碼,這也就是為什么POST會產生亂碼而GET不會的原因。
          呵呵,我知道的就這些了。
          2007-02-13 11:29 | Tony

          # re: HTTP請求發送XML數據  回復  更多評論   

          php可以模擬不?
          2011-11-15 22:04 | 余票查詢

          # re: HTTP請求發送XML數據  回復  更多評論   

          String xmlString = "<?xml version='1.0' encoding='gb2312'?>"
          + "<Req>"
          + "<EventContentReq>"
          + "<EventID>101</EventID >"
          + "</EventContentReq>"
          + "</Req>";

          byte[] xmlData = xmlString.getBytes();

          String urlStr = "http://124.128.62.164:7001/FetchTaskDataServlet";

          DataInputStream input = null;

          java.io.ByteArrayOutputStream out = null;

          try{

          //獲得到位置服務的鏈接

          URL url = new URL(urlStr);

          URLConnection urlCon = url.openConnection();

          urlCon.setDoOutput(true);

          urlCon.setDoInput(true);

          urlCon.setUseCaches(false);

          //將xml數據發送到位置服務

          urlCon.setRequestProperty("Content-Type", "text/xml");

          urlCon.setRequestProperty("Content-length",String.valueOf(xmlData.length));

          DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream());

          printout.write(xmlData);

          printout.flush();

          printout.close();

          input = new DataInputStream(urlCon.getInputStream());

          byte[] rResult;

          out = new java.io.ByteArrayOutputStream();

          byte[] bufferByte = newbyte[256];

          int l = -1;

          int downloadSize = 0;

          while ((l = input.read(bufferByte)) > -1) {

          downloadSize += l;

          out.write(bufferByte, 0, l);

          out.flush();

          }

          rResult = out.toByteArray();

          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          DocumentBuilder db = dbf.newDocumentBuilder();

          Document d = db.parse(new ByteArrayInputStream(rResult));

          String TaskAddr = d.getElementsByTagName("TaskAddr").item(0).getFirstChild().getNodeValue();

          System.out.println("TaskAddr:"+TaskAddr);

          }

          catch(Exception e){

          e.printStackTrace();

          }

          finally {

          try {

          out.close();

          input.close();

          }

          catch (Exception ex) {

          }

          }
          2014-05-20 21:18 | 4

          # re: HTTP請求發送XML數據  回復  更多評論   

          ios中的發送裸數據xml怎么發送
          2014-09-23 10:19 | 夜鶯
          主站蜘蛛池模板: 宣威市| 洪江市| 高安市| 静安区| 连南| 玉山县| 阳江市| 焦作市| 廉江市| 榆树市| 曲水县| 卫辉市| 武邑县| 丰顺县| 松原市| 咸阳市| 敖汉旗| 盐亭县| 长治市| 治县。| 什邡市| 玉田县| 兴仁县| 东乡| 安图县| 靖江市| 临清市| 唐河县| 揭阳市| 青神县| 龙州县| 布拖县| 砚山县| 黄陵县| 汉源县| 兴山县| 安图县| 海晏县| 新密市| 临邑县| 澳门|