冷面閻羅

          低調(diào)做人&&高調(diào)做事
          隨筆 - 208, 文章 - 3, 評(píng)論 - 593, 引用 - 0
          數(shù)據(jù)加載中……

          HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)

          ???? ?http請(qǐng)求發(fā)送一些簡(jiǎn)單的數(shù)據(jù),大家應(yīng)該知道,直接在url后加"?參數(shù)名=參數(shù)值&參數(shù)名=參數(shù)值&",但是數(shù)據(jù)過(guò)多,這樣發(fā)送就不可以,不管post還是get數(shù)據(jù)量超過(guò)2m好像都不行.當(dāng)數(shù)據(jù)量大的時(shí)候可以采用xml格式,發(fā)送,此時(shí)發(fā)送方法就要改一下,不能在url地址后面加參數(shù)了,這是要用到

          ?????????????????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();

          ??????? 接受到的數(shù)據(jù)為一個(gè)流,流中包含xml數(shù)據(jù),如果直接對(duì)流操作,轉(zhuǎn)化成string然后再操作就有些麻煩了.此時(shí)用jdom操作這個(gè)xml的流,直接生成xml對(duì)象
          SAXBuilder?sb?=?new?SAXBuilder();?//?新建立構(gòu)造器
          ????????????doc?=?sb.build(inStream);
          ????????????Element?root?
          =?(Element)?doc.getRootElement();
          ??????? 對(duì)這個(gè)xml的doc對(duì)象操作,想必大家應(yīng)該會(huì)吧!先得到根節(jié)點(diǎn),然后再得到子節(jié)點(diǎn).....

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

          評(píng)論

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

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

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

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

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)[未登錄](méi)  回復(fù)  更多評(píng)論   

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

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

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

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)[未登錄](méi)  回復(fù)  更多評(píng)論   

          GET的參數(shù)長(zhǎng)度為2K的字節(jié)(漢字為1024個(gè)),而POST是沒(méi)有的。造成這種區(qū)別的原因是GET是連接后提交,而POST則是連接前提交。這么說(shuō)吧,就是GET在切換超鏈接的時(shí)候?qū)?shù)一起帶過(guò)去的;而POST則是先跟目標(biāo)url建立起一條數(shù)據(jù)通道,將數(shù)據(jù)提交過(guò)去,然后再切換到目標(biāo)url的。區(qū)別的實(shí)質(zhì)是有沒(méi)有在提交時(shí)建立一條數(shù)據(jù)通道。
          從它們的名字也可以看出這種關(guān)系:GET是指目標(biāo)url主動(dòng)去“拿”,因?yàn)槭秋@性給傳過(guò)去了;而POST則是走“郵箱”郵過(guò)去了,隱形傳遞,因此也就沒(méi)有大小限制。呵呵,不知這么說(shuō)是否貼切。
          由于數(shù)據(jù)通道的存在,因此POST提交時(shí)會(huì)自動(dòng)地將數(shù)據(jù)進(jìn)行“iso-8859-1”的編碼,這也就是為什么POST會(huì)產(chǎn)生亂碼而GET不會(huì)的原因。
          呵呵,我知道的就這些了。
          2007-02-13 11:29 | Tony

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

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

          # re: HTTP請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

          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{

          //獲得到位置服務(wù)的鏈接

          URL url = new URL(urlStr);

          URLConnection urlCon = url.openConnection();

          urlCon.setDoOutput(true);

          urlCon.setDoInput(true);

          urlCon.setUseCaches(false);

          //將xml數(shù)據(jù)發(fā)送到位置服務(wù)

          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請(qǐng)求發(fā)送XML數(shù)據(jù)  回復(fù)  更多評(píng)論   

          ios中的發(fā)送裸數(shù)據(jù)xml怎么發(fā)送
          2014-09-23 10:19 | 夜鶯
          主站蜘蛛池模板: 霍城县| 安新县| 桦川县| 辉县市| 潞城市| 昔阳县| 东丰县| 定襄县| 汽车| 安塞县| 开封市| 莱芜市| 武川县| 称多县| 临海市| 呼玛县| 定安县| 龙泉市| 砚山县| 安徽省| 台江县| 巨鹿县| 名山县| 门头沟区| 池州市| 景宁| 苍山县| 望城县| 康乐县| 扎鲁特旗| 清镇市| 洱源县| 和静县| 江孜县| 马边| 麦盖提县| 汉阴县| 惠水县| 民权县| 磴口县| 黄龙县|