`
simgsg
  • 浏览: 96027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

request.getInputStream()读取post传递的xml文件问题

 
阅读更多

最近有个项目下需要接收POST过来的XML数据包,在servlet方法中,调用request.getInputStream() 发现无法读到任何数据。

 

以下是POST数据的程序代码: Java代码

 

  1. URL url = new URL(urlBuf);  
  2.      HttpURLConnection httpURLConnection = (HttpURLConnection) url  
  3.        .openConnection();  
  4.      httpURLConnection.setDoOutput(true);  
  5.      httpURLConnection.setDoInput(true);  
  6.      httpURLConnection.setRequestMethod("POST");   httpURLConnection.setConnectTimeout(5000);  
  7.      httpURLConnection.setReadTimeout(5000);  
  8.      httpURLConnection.connect();  
  9.      BufferedWriter out = new BufferedWriter(new OutputStreamWriter(  
  10.        httpURLConnection.getOutputStream(), "GBK"));  
  11.      out.write(word);  
  12.      out.flush();  

   

 

这个是读取程序代码: Java代码

 

  1. BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));  
  2.            String line = null;  
  3.            StringBuilder sb = new StringBuilder();  
  4.            while((line = br.readLine())!=null){  
  5.                sb.append(line);  
  6.            }  

             开始还以为是犯了什么低级错误,不断调试查找原因,无果。baidu上搜索了下,众说纷纭,也没有很好的解决方案。我也左思右想,文件上传也是在servlet立面处理的,组件肯定用到inpputStream一点问题没有,没可能这里不行,后来灵光一闪,
在POST程序中加入: Java代码
    httpURLConnection.setRequestProperty("content-type", "text/html");,测试成功!

 

根据以上现象,我们不难看出servlet对没有指定content-type的request请求,封装时候作了一些处理,导致无法在servlet中获取request.getInputStream() 和 request.getReader()。

分享到:
评论

相关推荐

    sevlet生命周期,request web.xml 及ServletContext总结

    `request.getInputStream()`读取请求体数据;`request.getRequestURI()`和`getRemoteAddr()`分别获取请求URI和客户端IP地址等。 理解Servlet生命周期以及如何从`HttpServletRequest`对象获取信息是开发Java Web应用...

    android客户端向服务端上传数据 post和get两种方式

    .post(RequestBody.create(MediaType.parse("text/xml"), xmlData)) .build(); Response response = client.newCall(request).execute(); ``` 3. 文件上传: 文件上传通常与POST请求结合,通过Multipart/form-...

    远程请求url,发送xml参数,返回结果值的2个方法

    String xmlData = "<request><param1>value1</param1><param2>value2</param2></request>"; ``` 2. **设置URL连接**:然后创建`HttpURLConnection`对象,指定目标URL。 ```java URL url = new URL(...

    android基础 - POST GET

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

    springmvc详细配置包含读取配置文件和上传下载文件

    @RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 文件处理逻辑... } ``` 至于文件下载,你可以创建一个...

    jdom解析xml java发送post请求

    JDOM是Java中一个专门用于处理XML的库,它提供了一种高效、方便的方式来读取、写入和操作XML文档。在这个场景下,我们将探讨如何使用JDOM来解析XML,并通过Java实现POST请求,从而与PHP服务器进行交互,获取或发送...

    Java文件上传下载

    这段代码展示了如何处理POST请求,获取上传的文件Part,读取文件内容,并将其保存到服务器的指定位置。 二、文件下载 文件下载通常涉及HTTP响应的`Content-Disposition`头,告诉浏览器以附件形式下载文件。以下是一...

    向url发送xml包,并得到返回的XML包

    String xmlData = "<request><user>John</user><password>123456</password></request>"; URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.open...

    android getpost url

    xml.append("</request>"); // 创建URL对象 URL url = new URL("http://yourserver.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置是否使用输出流 conn.setDoOutput...

    android基础 - 读取PHP

    最后,通过getInputStream()读取响应内容。 ```java URL url = new URL("http://yourserver.com/yourphpfile.php"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection....

    java中main方法发送httpPost请求

    读取服务器返回的数据,可能是JSON、XML或其他格式: ```java try(InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"))) { ...

    Android代码-Http简单应用源码.zip

    在Android应用中,进行网络操作前,必须在`AndroidManifest.xml`文件中添加相应的权限声明。例如,使用`<uses-permission>`标签来请求INTERNET权限: ```xml <uses-permission android:name="android.permission....

    Struts2文件的上传和下载

    Struts2会自动处理`multipart/form-data`类型的请求,并将文件内容封装在`ServletActionContext`中,可以通过`ServletActionContext.getRequest().getParts()`来访问上传的文件。例如: ```java public class ...

    ajax异步文件上传,servlet处理

    在实际应用中,需要考虑安全性问题,比如限制文件类型、大小,防止恶意文件上传。此外,还可以使用进度条展示上传进度,提高用户体验。对于大文件上传,可以使用分块上传或断点续传技术。 ### 6. 配置Web服务器 别...

    java调用.net的WebService.pdf

    import javax.xml.parsers.*; import org.w3c.dom.*; public class WeatherReport { private static String getSoapRequest(String city) { try { // 创建SOAP请求的XML字符串 // ... } catch (Exception e) {...

    快速JSP上传文件

    4. 安全与优化:在实际应用中,我们还需要考虑一些安全性和性能问题,如限制文件大小、检查文件类型、防止路径遍历攻击等。同时,处理大量上传时,可以考虑使用异步处理或分块上传。 总结,这个“快速JSP上传文件”...

    java-多文件上传dome

    - **文件重命名**:为了防止文件名冲突和安全问题,上传的文件应该用唯一的ID或者时间戳进行重命名。 - **异步处理**:对于大量文件上传,考虑使用异步处理以避免阻塞其他请求。 - **错误处理**:处理文件上传...

    JSP页面中的文件上传类

    在这个例子中,`ServletFileUpload`用于解析多部分请求,`FileItemIterator`遍历每个文件项,`FileItemStream`提供了读取文件内容的流。 三、Java EE 7的Part接口 如果你使用的是Java EE 7或更高版本,可以直接使用...

    java 学习分享

    在 Tomcat 中,`server.xml` 文件是配置服务器行为的主要文件之一。其中 `<Connector>` 元素用于配置 HTTP 连接器的行为,包括端口、主机名等设置。对于字符编码的支持,可以通过 `URIEncoding` 属性进行配置。 ###...

    js异步上传文件

    在这个例子中,Servlet或Action在处理完文件上传后,可以通过设置request属性将消息传递给JSP,然后JSP显示这个消息。 总结起来,JavaScript的异步文件上传涉及到前端的Ajax处理、服务器端的Servlet或Action处理,...

Global site tag (gtag.js) - Google Analytics