0 0

post一个超过java的String长度限制的xml,有哪些方式呢?5

一个发布在web的响应post的xml请求的xml,(就是用一个xml作为内容响应发过来的xml)
由于需要返回的内容很长,超过java的String限制,有什么方式处理这样的情况呢?

问题补充:需要解决的就是 接收超长信息和回复超长信息的方式。目前是直接内存中操作,但是,再长一些就有问题了。如何解决呢?最好不要动这个框架。
2012年6月02日 23:47

5个答案 按时间排序 按投票排序

0 0

访问XML的API有

SAX  JDom等不同的API

SAX 是只 load 你需要的部分到内存。
DOM 是把整个DOM load到内存。

你要根据你的需求选择 响应的API

至于String长度的问题, 参见


protected void sendToHttpServletResponse(byte[] reportContents,
			HttpServletResponse response, String fileName, String contentType,
			String extName) throws Exception {
		if (0 == reportContents.length) {
			throw new Exception("reportContents.length is 0.  ");
		}
		ServletOutputStream ouputStream = null;
		BufferedOutputStream bs = null;
		response.setBufferSize(reportContents.length);
		// response.setContentType("application/xml");
		response.setContentType(contentType);
		response.setContentLength(reportContents.length);
		response.setHeader("Content-Disposition", "attachment;filename="
				+ fileName + extName);
		response.setHeader("Expires", "0");
		response
				.setHeader("Cache-Control",
						"no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
		response.setHeader("Pragma", "public");
		try {
			ouputStream = response.getOutputStream();
			bs = new BufferedOutputStream(ouputStream);
			bs.write(reportContents);
			bs.flush();
		} catch (Exception e) {
			// TODO: handle exception
			throw e;
		} finally {

			if (null != bs)
				try {
					bs.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			if (null != ouputStream)
				try {
					ouputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}

		LOG.info("generateReport-> clint.executeMethod success ");
	}

2012年6月07日 06:18
0 0

post的东西不是流的方式吗?你用流式xmlapi解析不就行了?

2012年6月04日 09:18
0 0

如果确实是超过了字符串的长度限制,那么只有拆分再合并。

2012年6月03日 22:00
0 0

个人建议 和 socket一样,你接收或者传信息的时候 有一个开始标记 和一个结束标记!
单次传递 不要太对信息咯! 最后一起处理!
如果你的XML 太大了!也需要分次接收!

2012年6月03日 19:20
0 0

string有长度限制吗?好像内存不限制就ok吧?

2012年6月03日 19:00

相关推荐

    rar文件java post获取网页数据以及get方式获取数据.zip

    例如,要从一个网页获取数据,我们可以构造如下的URL: ```java String url = "http://example.com/data?id=123"; ``` 在Java中,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来发送GET请求: ``...

    超级有影响力霸气的Java面试题大全文档

     Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    android基础 - POST GET

    这种方式限制了URL长度,不适合传递大量数据或敏感信息。 - POST:请求参数放在请求体中,不受URL长度限制,可以传输大量数据和敏感信息。 2. 安全性: - GET:因为参数显示在URL上,所以易于被缓存、记录,相对...

    get和post的区别

    - 受到URL长度限制(大多数浏览器限制为2048个字符),因此不适合传输大量数据。 - **POST**: - 没有明确的数据大小限制,理论上可以传输非常大的数据量。 #### 5. 编码格式 - **GET**: - 默认使用ASCII编码...

    java判断试题.pdf

    结束 `session` 的主要方式包括关闭浏览器、两次访问之间的间隔时间超过非活动时间限制,或者显式地调用 `HttpSession` 的 `invalidate()` 方法。 --- #### 20. `Properties` 类的 `load()` 方法 **知识点**: `...

    java面试总结pdf版

    Get将参数附加在URL后面,可见且有长度限制,适合获取数据;Post将数据放在请求体中,安全且能传输大量数据,适合修改或提交数据。 三、Java多态的具体体现: 多态是面向对象的三大特性之一,体现在子类对象可以被...

    java调用WebService(客户端).pdf

    这种方式适合传输大量或复杂的参数,避免了URL长度限制。 3. **HttpSoap调用**: 对于SOAP协议,数据以XML格式封装在HTTP请求正文中。SOAP消息通常包含`<soap:Envelope>`标签,用于定义消息结构。Apache CXF库可以...

    java知识点

    GET是在URL中显式传递参数,适合获取数据,但对数据长度有限制,且不安全;POST则将参数隐藏在请求体中,可以传输大量数据,更安全,但可能导致缓存问题。 三、Java多态 多态是面向对象编程的重要特性,允许一个父...

    java工程师求职笔试题及答案.doc

    - **GET**:将表单数据附加在URL后面进行传递,数据可见且长度有限制。 - 例子:`/servlet/examples.HelloServlet?name=2p&password=123` - **POST**:将表单数据放置在HTTP请求的消息主体中进行传递,数据不可见且...

    于笑扬java综合知识点总结-必背(吐血推荐).doc

    Java多态是指在编程中可以使用同一个方法名,但根据不同的参数类型或对象类型来执行不同的操作。具体体现为: * 方法重载(Overload):同名方法可以根据参数类型的不同来执行不同的操作 * 方法重写(Override):...

    java面试必会200题.docx

    - Java虚拟机(JVM)是一个可以执行Java字节码的虚拟机环境。 - Java被称为“平台无关”的原因在于,Java程序在任何安装了JVM的操作系统上都能运行相同的字节码。 30. **什么是正则表达式?用途是什么?哪个包使用...

    java面试笔试基础核心总结

    GET将参数附在URL后面,适合获取数据,但对数据长度有限制,且不安全;POST将数据放在请求体中,能处理大量数据,更安全,但可能被防火墙拦截。 3. **Java多态的具体体现** 多态性是面向对象的三大特性之一,体现...

    2016 Java 基础 面试题

    GET请求长度有限制。 - **POST**:主要用于发送数据,数据放在HTTP消息的正文中,没有数据量限制,相对安全。 #### 4. **Set 如何判断值重复** `Set`是一种不允许元素重复的集合,它是通过调用对象的`equals()`...

    net学习笔记及其他代码应用

    19.ASP.net的身份验证方式有哪些?分别是什么原理? 答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥) 20.什么是Code-Behind技术? 答:代码后植。 21.在.net中,配件的意思是? 答:程序集。...

    JAVA+ORALCE面试题汇总

    Struts是一个基于MVC设计模式的Java Web应用框架。它将模型、视图和控制器分离,使得开发更加结构化、易于维护。Struts的核心组件包括: - **ActionServlet**:作为控制器,负责接收用户请求,并将其分发给合适的...

    JAVA程序员面试题5

    - **J2EE是一个框架**:提供了多种API和技术支持,包括但不限于JDBC、JNDI、RMI、JMS、EJB、JTA等。 #### 五、编码转换示例 ```java public String translate(String str) { String tempStr = ""; try { // 将...

    java面试题

    - **数据大小限制**:由于GET方法的数据是通过URL传递的,因此它受到URL长度的限制(虽然这个限制在不同浏览器中有所不同,但通常最大约为2KB),而POST方法没有此限制。 - **安全性**:GET方法不如POST方法安全,...

    java总结,问题,知识点

    Get是HTTP协议中的一个方法,用于获取资源,参数显示在URL中,有长度限制且不安全。Post用于提交数据,参数隐藏在请求体中,容量大且相对安全。 3. Java多态: 多态是面向对象的核心特性之一,允许父类型的引用...

Global site tag (gtag.js) - Google Analytics