最近有个项目下需要接收POST过来的XML数据包,在servlet方法中,调用request.getInputStream() 发现无法读到任何数据。
以下是POST数据的程序代码: Java代码
- URL url = new URL(urlBuf);
- HttpURLConnection httpURLConnection = (HttpURLConnection) url
- .openConnection();
- httpURLConnection.setDoOutput(true);
- httpURLConnection.setDoInput(true);
- httpURLConnection.setRequestMethod("POST"); httpURLConnection.setConnectTimeout(5000);
- httpURLConnection.setReadTimeout(5000);
- httpURLConnection.connect();
- BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
- httpURLConnection.getOutputStream(), "GBK"));
- out.write(word);
- out.flush();
这个是读取程序代码: Java代码
- BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
- String line = null;
- StringBuilder sb = new StringBuilder();
- while((line = br.readLine())!=null){
- sb.append(line);
- }
开始还以为是犯了什么低级错误,不断调试查找原因,无果。baidu上搜索了下,众说纷纭,也没有很好的解决方案。我也左思右想,文件上传也是在servlet立面处理的,组件肯定用到inpputStream一点问题没有,没可能这里不行,后来灵光一闪,
在POST程序中加入: Java代码
httpURLConnection.setRequestProperty("content-type", "text/html");,测试成功!
根据以上现象,我们不难看出servlet对没有指定content-type的request请求,封装时候作了一些处理,导致无法在servlet中获取request.getInputStream() 和 request.getReader()。
分享到:
相关推荐
`request.getInputStream()`读取请求体数据;`request.getRequestURI()`和`getRemoteAddr()`分别获取请求URI和客户端IP地址等。 理解Servlet生命周期以及如何从`HttpServletRequest`对象获取信息是开发Java Web应用...
.post(RequestBody.create(MediaType.parse("text/xml"), xmlData)) .build(); Response response = client.newCall(request).execute(); ``` 3. 文件上传: 文件上传通常与POST请求结合,通过Multipart/form-...
String xmlData = "<request><param1>value1</param1><param2>value2</param2></request>"; ``` 2. **设置URL连接**:然后创建`HttpURLConnection`对象,指定目标URL。 ```java URL url = new URL(...
这种方式限制了URL长度,不适合传递大量数据或敏感信息。 - POST:请求参数放在请求体中,不受URL长度限制,可以传输大量数据和敏感信息。 2. 安全性: - GET:因为参数显示在URL上,所以易于被缓存、记录,相对...
@RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 文件处理逻辑... } ``` 至于文件下载,你可以创建一个...
JDOM是Java中一个专门用于处理XML的库,它提供了一种高效、方便的方式来读取、写入和操作XML文档。在这个场景下,我们将探讨如何使用JDOM来解析XML,并通过Java实现POST请求,从而与PHP服务器进行交互,获取或发送...
这段代码展示了如何处理POST请求,获取上传的文件Part,读取文件内容,并将其保存到服务器的指定位置。 二、文件下载 文件下载通常涉及HTTP响应的`Content-Disposition`头,告诉浏览器以附件形式下载文件。以下是一...
String xmlData = "<request><user>John</user><password>123456</password></request>"; URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.open...
xml.append("</request>"); // 创建URL对象 URL url = new URL("http://yourserver.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置是否使用输出流 conn.setDoOutput...
最后,通过getInputStream()读取响应内容。 ```java URL url = new URL("http://yourserver.com/yourphpfile.php"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection....
读取服务器返回的数据,可能是JSON、XML或其他格式: ```java try(InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"))) { ...
在Android应用中,进行网络操作前,必须在`AndroidManifest.xml`文件中添加相应的权限声明。例如,使用`<uses-permission>`标签来请求INTERNET权限: ```xml <uses-permission android:name="android.permission....
Struts2会自动处理`multipart/form-data`类型的请求,并将文件内容封装在`ServletActionContext`中,可以通过`ServletActionContext.getRequest().getParts()`来访问上传的文件。例如: ```java public class ...
在实际应用中,需要考虑安全性问题,比如限制文件类型、大小,防止恶意文件上传。此外,还可以使用进度条展示上传进度,提高用户体验。对于大文件上传,可以使用分块上传或断点续传技术。 ### 6. 配置Web服务器 别...
import javax.xml.parsers.*; import org.w3c.dom.*; public class WeatherReport { private static String getSoapRequest(String city) { try { // 创建SOAP请求的XML字符串 // ... } catch (Exception e) {...
4. 安全与优化:在实际应用中,我们还需要考虑一些安全性和性能问题,如限制文件大小、检查文件类型、防止路径遍历攻击等。同时,处理大量上传时,可以考虑使用异步处理或分块上传。 总结,这个“快速JSP上传文件”...
- **文件重命名**:为了防止文件名冲突和安全问题,上传的文件应该用唯一的ID或者时间戳进行重命名。 - **异步处理**:对于大量文件上传,考虑使用异步处理以避免阻塞其他请求。 - **错误处理**:处理文件上传...
在这个例子中,`ServletFileUpload`用于解析多部分请求,`FileItemIterator`遍历每个文件项,`FileItemStream`提供了读取文件内容的流。 三、Java EE 7的Part接口 如果你使用的是Java EE 7或更高版本,可以直接使用...
在 Tomcat 中,`server.xml` 文件是配置服务器行为的主要文件之一。其中 `<Connector>` 元素用于配置 HTTP 连接器的行为,包括端口、主机名等设置。对于字符编码的支持,可以通过 `URIEncoding` 属性进行配置。 ###...
在这个例子中,Servlet或Action在处理完文件上传后,可以通过设置request属性将消息传递给JSP,然后JSP显示这个消息。 总结起来,JavaScript的异步文件上传涉及到前端的Ajax处理、服务器端的Servlet或Action处理,...