冷面阎罗

低调做人&&高调做事
随笔 - 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 冷面阎罗 阅读(8670) 评论(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 | 夜莺

只有注册用户登录后才能发表评论。


网站导航: