近有个项目下需要接收POST过来的XML数据包,在struts中的Action方法中,调用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();
view plaincopy to clipboardprint?
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();
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);
}
view plaincopy to clipboardprint?
BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
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上搜索了下,众说纷纭,也没有很好的解决方案。我也左思右想,文件上传也是在Action立面处理的,组件肯定用到inpputStream一点问题没有,没可能这里不行,后来灵光一闪,在POST程序中加入: Java代码
httpURLConnection.setRequestProperty("content-type", "text/html");
view plaincopy to clipboardprint?
httpURLConnection.setRequestProperty("content-type", "text/html");
httpURLConnection.setRequestProperty("content-type", "text/html");,测试成功! 根据以上现象,我们不难看出struts对没有指定content-type的request请求,封装时候作了一些处理,导致无法在Action中获取request.getInputStream() 和 request.getReader()。
http://www.bitscn.com/pdb/java/200806/143983.html
分享到:
相关推荐
在Java Web开发中,`HttpServletRequest`接口提供了一个方法`getInputStream()`,用于获取客户端发送请求时附带的数据,这些数据通常以二进制形式存在,比如上传文件或者POST请求中的非表单数据。然而,一个重要的...
`request.getInputStream()`读取请求体数据;`request.getRequestURI()`和`getRemoteAddr()`分别获取请求URI和客户端IP地址等。 理解Servlet生命周期以及如何从`HttpServletRequest`对象获取信息是开发Java Web应用...
本篇将详细讲解如何在Android中使用POST方式来获取数据,并结合源代码和JSON解析进行实例说明。 首先,POST请求常用于向服务器发送大量数据或者需要改变服务器状态的情况。在Android中,我们可以使用`...
为了在服务器端获取这些POST数据,我们可以使用以下方法: 1. **使用`Part`接口**:Java Servlet 3.0及以上版本提供了处理`multipart/form-data`的API。你可以通过`HttpServletRequest`的`getParts()`方法获取所有...
对于JSON或XML数据,GET请求通常用于从服务器获取这些数据,数据以字符串形式返回,可以通过解析库如Gson或Jackson处理JSON,或者使用`javax.xml.parsers.DocumentBuilderFactory`处理XML。 ### POST请求 POST请求...
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpClient.execute(httpPost); ``` 三、Android与JavaWeb交互 在实际应用中,Android通常与后端JavaWeb服务进行数据交换...
使用`HttpURLConnection`,需要创建一个`RequestBody`实例来包装文件数据: ```java File file = new File("/path/to/file"); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody....
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuilder jsonPayload = new StringBuilder(); String line; while ((line = reader.readLine()) != null...
param = request.POST.get('paramName') # 处理参数... ``` 对于Node.js的Express框架,我们可以使用`req.query`和`req.body`来访问GET和POST参数: ```javascript const express = require('express'); const ...
GET主要用于获取资源,其参数通过URL直接传递,一般用于查询操作,数据量有限,通常不超过2KB。而POST方法则可以传输大量数据,它将数据封装在请求体中,常用于提交表单或者上传文件。 在Android中,我们可以使用...
例如,在一个基于java的web应用中,我们可以使用上述方法来获取客户端提交的json数据,并将其解析为java对象,以便于后续的业务处理。 使用HttpServletRequest获取post请求body内容的方法是一种常见的技术,在实际...
request.setMethod(Request.Method.POST); request.addHeader("Content-Type", "application/x-www-form-urlencoded"); request.setRequestBody("key1=value1&key2=value2"); Response response = request.execute()...
- **ServletInputStream request.getInputStream()**: 包含整个请求的数据,包括文件数据和表单数据。 **(2)多部件表单的体** - 表单数据被分割成多个部件,每个部件代表一个表单元素。 - 每个部件包含了请求头和...
在Android开发中,POST和GET是两种主要的HTTP请求方法,用于从服务器获取数据或向服务器发送数据。本文将深入探讨这两种方法的工作原理、应用场景以及如何在Android中实现它们。 一、POST与GET方法的区别 1. 工作...
在Java中,我们可以使用`HttpURLConnection`或者第三方库如Apache HttpClient或Spring的RestTemplate来实现POST请求。以下是一个使用`HttpURLConnection`的POST请求示例: ```java import java.io.OutputStream; ...
在Java编程中,发送HTTP请求是常见的任务,无论是获取网页数据、调用API接口还是进行自动化测试,都可能需要这个功能。本篇文章将详细介绍如何使用Java实现POST和GET两种HTTP请求方法。 首先,GET请求是最基础的...
GET用于获取资源,而POST则用于向服务器发送数据,通常用于提交表单或创建新资源。 **1. Android HTTP GET请求** GET请求通常用于从服务器获取数据。在Android中,我们可以使用HttpURLConnection或者第三方库如...
2. **构建Request对象**:使用`new Request.Builder()`,添加URL,设置POST方法,并通过`post(RequestBody)`指定POST数据。 3. **发送请求并处理响应**:通过OkHttpClient的`newCall(Request)`方法创建Call对象,再...
你可以使用`request.getPart("filename")`来获取名为`filename`的`Part`对象,然后调用`Part`的`write()`方法将其写入到服务器上的文件系统。 ```java @WebServlet("/upload") public class UploadServlet extends ...
- `InputStream getInputStream()`:获取请求体的数据流,适用于POST请求时上传文件或发送JSON等数据。 三、实例程序 以下是一个简单的Servlet程序,演示了如何使用`HttpServletRequest`接口: ```java import ...