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

使用request.getInputStream() 获取POST数据

阅读更多

近有个项目下需要接收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

分享到:
评论

相关推荐

    浅谈request.getinputstream只能读取一次的问题

    在Java Web开发中,`HttpServletRequest`接口提供了一个方法`getInputStream()`,用于获取客户端发送请求时附带的数据,这些数据通常以二进制形式存在,比如上传文件或者POST请求中的非表单数据。然而,一个重要的...

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

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

    android采用post方式获取数据

    本篇将详细讲解如何在Android中使用POST方式来获取数据,并结合源代码和JSON解析进行实例说明。 首先,POST请求常用于向服务器发送大量数据或者需要改变服务器状态的情况。在Android中,我们可以使用`...

    获取POST数据的值.doc

    为了在服务器端获取这些POST数据,我们可以使用以下方法: 1. **使用`Part`接口**:Java Servlet 3.0及以上版本提供了处理`multipart/form-data`的API。你可以通过`HttpServletRequest`的`getParts()`方法获取所有...

    android get,post获取数据

    对于JSON或XML数据,GET请求通常用于从服务器获取这些数据,数据以字符串形式返回,可以通过解析库如Gson或Jackson处理JSON,或者使用`javax.xml.parsers.DocumentBuilderFactory`处理XML。 ### POST请求 POST请求...

    Android端使用get post 方法提交数据到服务器demo

    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpClient.execute(httpPost); ``` 三、Android与JavaWeb交互 在实际应用中,Android通常与后端JavaWeb服务进行数据交换...

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

    使用`HttpURLConnection`,需要创建一个`RequestBody`实例来包装文件数据: ```java File file = new File("/path/to/file"); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody....

    Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法

    BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuilder jsonPayload = new StringBuilder(); String line; while ((line = reader.readLine()) != null...

    获取request的参数

    param = request.POST.get('paramName') # 处理参数... ``` 对于Node.js的Express框架,我们可以使用`req.query`和`req.body`来访问GET和POST参数: ```javascript const express = require('express'); const ...

    android 后台 get和post请求数据

    GET主要用于获取资源,其参数通过URL直接传递,一般用于查询操作,数据量有限,通常不超过2KB。而POST方法则可以传输大量数据,它将数据封装在请求体中,常用于提交表单或者上传文件。 在Android中,我们可以使用...

    java通过HttpServletRequest获取post请求中的body内容的方法

    例如,在一个基于java的web应用中,我们可以使用上述方法来获取客户端提交的json数据,并将其解析为java对象,以便于后续的业务处理。 使用HttpServletRequest获取post请求body内容的方法是一种常见的技术,在实际...

    http request 解析

    request.setMethod(Request.Method.POST); request.addHeader("Content-Type", "application/x-www-form-urlencoded"); request.setRequestBody("key1=value1&key2=value2"); Response response = request.execute()...

    崔希凡JavaWeb笔记day22-day24

    - **ServletInputStream request.getInputStream()**: 包含整个请求的数据,包括文件数据和表单数据。 **(2)多部件表单的体** - 表单数据被分割成多个部件,每个部件代表一个表单元素。 - 每个部件包含了请求头和...

    android基础 - POST GET

    在Android开发中,POST和GET是两种主要的HTTP请求方法,用于从服务器获取数据或向服务器发送数据。本文将深入探讨这两种方法的工作原理、应用场景以及如何在Android中实现它们。 一、POST与GET方法的区别 1. 工作...

    java后台实现 get post 提交.zip

    在Java中,我们可以使用`HttpURLConnection`或者第三方库如Apache HttpClient或Spring的RestTemplate来实现POST请求。以下是一个使用`HttpURLConnection`的POST请求示例: ```java import java.io.OutputStream; ...

    java发http请求(post&get)

    在Java编程中,发送HTTP请求是常见的任务,无论是获取网页数据、调用API接口还是进行自动化测试,都可能需要这个功能。本篇文章将详细介绍如何使用Java实现POST和GET两种HTTP请求方法。 首先,GET请求是最基础的...

    android http post/get

    GET用于获取资源,而POST则用于向服务器发送数据,通常用于提交表单或创建新资源。 **1. Android HTTP GET请求** GET请求通常用于从服务器获取数据。在Android中,我们可以使用HttpURLConnection或者第三方库如...

    android原生post请求源码

    2. **构建Request对象**:使用`new Request.Builder()`,添加URL,设置POST方法,并通过`post(RequestBody)`指定POST数据。 3. **发送请求并处理响应**:通过OkHttpClient的`newCall(Request)`方法创建Call对象,再...

    使用Servlet处理一个上传的文件

    你可以使用`request.getPart("filename")`来获取名为`filename`的`Part`对象,然后调用`Part`的`write()`方法将其写入到服务器上的文件系统。 ```java @WebServlet("/upload") public class UploadServlet extends ...

    request的实例源码

    - `InputStream getInputStream()`:获取请求体的数据流,适用于POST请求时上传文件或发送JSON等数据。 三、实例程序 以下是一个简单的Servlet程序,演示了如何使用`HttpServletRequest`接口: ```java import ...

Global site tag (gtag.js) - Google Analytics