`
wahaha603
  • 浏览: 79637 次
  • 来自: 上海
社区版块
存档分类
最新评论

从http post请求中取值

阅读更多

 

我们都知道从http的请求中可以通过 request.getParameter("someParam")来取得 get方法提交的参数值,那么post请求中的body(如xml,json等格式)如果取得呢?

private String getRequestBody(final HttpServletRequest request) {
		
		String charset = request.getCharacterEncoding();   
		 if (charset == null) {   
		     charset = DEFAULT_ENCODE;   
		 }  
		 String str, wholeStr;
		try {
			BufferedReader br = request.getReader();
			 wholeStr = "";
			 while((str = br.readLine()) != null){
			 wholeStr += str;
			 }
			 return wholeStr;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

 

 

    XML格式的String 类型与java对象转换类

 import java.io.StringReader;  
import java.io.StringWriter;  
import java.util.Collection;  
  
import javax.xml.bind.JAXBContext;  
import javax.xml.bind.JAXBElement;  
import javax.xml.bind.JAXBException;  
import javax.xml.bind.Marshaller;  
import javax.xml.bind.Unmarshaller;  
import javax.xml.bind.annotation.XmlAnyElement;  
import javax.xml.namespace.QName;  
  
import org.apache.commons.lang.StringUtils;  
  
/** 
 * 使用Jaxb2.0实现XML<->Java Object的Binder. 
 *  
 * 特别支持Root对象是List的情形. 
 *  
 * @author 
 */  
public class JaxbUtil {  
    // 多线程安全的Context.  
    private JAXBContext jaxbContext;  
  
    /** 
     * @param types 
     *            所有需要序列化的Root对象的类型. 
     */  
    public JaxbUtil(Class<?>... types) {  
        try {  
            jaxbContext = JAXBContext.newInstance(types);  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * Java Object->Xml. 
     */  
    public String toXml(Object root, String encoding) {  
        try {  
            StringWriter writer = new StringWriter();  
            createMarshaller(encoding).marshal(root, writer);  
            return writer.toString();  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * Java Object->Xml, 特别支持对Root Element是Collection的情形. 
     */  
    @SuppressWarnings("unchecked")  
    public String toXml(Collection root, String rootName, String encoding) {  
        try {  
            CollectionWrapper wrapper = new CollectionWrapper();  
            wrapper.collection = root;  
  
            JAXBElement<CollectionWrapper> wrapperElement = new JAXBElement<CollectionWrapper>(  
                    new QName(rootName), CollectionWrapper.class, wrapper);  
  
            StringWriter writer = new StringWriter();  
            createMarshaller(encoding).marshal(wrapperElement, writer);  
  
            return writer.toString();  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * Xml->Java Object. 
     */  
    @SuppressWarnings("unchecked")  
    public <T> T fromXml(String xml) {  
        try {  
            StringReader reader = new StringReader(xml);  
            return (T) createUnmarshaller().unmarshal(reader);  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * Xml->Java Object, 支持大小写敏感或不敏感. 
     */  
    @SuppressWarnings("unchecked")  
    public <T> T fromXml(String xml, boolean caseSensitive) {  
        try {  
            String fromXml = xml;  
            if (!caseSensitive)  
                fromXml = xml.toLowerCase();  
            StringReader reader = new StringReader(fromXml);  
            return (T) createUnmarshaller().unmarshal(reader);  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * 创建Marshaller, 设定encoding(可为Null). 
     */  
    public Marshaller createMarshaller(String encoding) {  
        try {  
            Marshaller marshaller = jaxbContext.createMarshaller();  
  
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);  
  
            if (StringUtils.isNotBlank(encoding)) {  
                marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);  
            }  
            return marshaller;  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * 创建UnMarshaller. 
     */  
    public Unmarshaller createUnmarshaller() {  
        try {  
            return jaxbContext.createUnmarshaller();  
        } catch (JAXBException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /** 
     * 封装Root Element 是 Collection的情况. 
     */  
    public static class CollectionWrapper {  
        @SuppressWarnings("unchecked")  
        @XmlAnyElement  
        protected Collection collection;  
    }  
} 

 

 

@Override
	public AuibInsuranceCallback formatCallBackData(String source, String sign) {
		if(this.checkCallbackInfo(source, sign)){
			JaxbUtil resultBinder = new JaxbUtil(AuibInsuranceCallback.class);  
			AuibInsuranceCallback auibInsuranceCallback = resultBinder.fromXml(source); 
			return auibInsuranceCallback;
		}else{
			return null;
		}
		
	}

 

分享到:
评论

相关推荐

    cgi 接收post的数据

    这是因为Web服务器在接收到POST请求后,会将请求体中的数据重定向到`STDIN`,供CGI脚本读取。接下来,我们将详细介绍如何在Perl中实现这一过程。 ### 使用Perl处理POST数据 #### 读取POST数据 在Perl中,可以通过...

    详解如何在Vue项目中发送jsonp请求

    在页面a中由前端发送一个jsonp请求到客户方,得到一个token值 前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已...

    linux shell中curl 发送post请求json格式问题的处理方法

    今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'application/json' -d {BTime:$btime} http://api.baidu.com 变量...

    Dwrweb服务的ajax请求数据直接调用javaDAO类返回JSON数据。取值方便。快捷

    DWR同样支持GET请求,但在处理复杂或大量数据时,POST请求通常是更好的选择。 接着,提到的“javaDAO类”是Data Access Object的简称,它是数据库操作的抽象层。DAO模式是设计模式中的一种,旨在封装对数据库的操作...

    asp.net 利用jquery-ajax调用后台方法

    对于更简单的GET或POST请求,jQuery提供了简化的`$.getJSON()`, `$.get()`, `$.post()`方法,它们是`$.ajax()`的封装,方便快捷地进行数据请求。 综上所述,通过jQuery的AJAX功能,我们可以轻松地在客户端与ASP...

    form表单复选框取值

    当用户点击删除按钮时,JS会序列化表单数据(包括选中的复选框)并使用AJAX发送POST请求到服务器。在本例中,请求的URL是`TeamMg_deleteContactManagement.action`,数据类型设置为`json`,并且传递了`form`变量...

    Form表单中method=post/get两种数据传输的方式的区别

    - POST请求不会被浏览器自动缓存,也不会出现在浏览器的历史记录中,但刷新页面时会重新发送POST请求,可能会提示用户是否重复提交。 - POST请求在服务器端处理速度通常较GET慢,因为需要解析请求主体中的数据。 ...

    jquery取值.docx

    - 使用 `$.post()` 进行 POST 请求:`$.post(url, data, success, dataType)` 发送异步POST请求,参数分别是URL、数据、成功回调函数和数据类型。 8. **字符串处理**: - `$.trim(str)` 用于去除字符串两端的空白...

    接口测试的面试题.docx

    * POST 请求:向服务器提交数据请求,放在 body 中,无长度限制,安全性高 八、接口测试常见的状态码 接口测试常见的状态码包括: * 100:服务器接收消息,还需要继续发送请求 * 200:请求成功 * 301:永久重定向...

    Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值_.docx

    在Servlet中,通常会覆盖`doPost`方法来处理POST请求。在这个例子中,Servlet会创建一个JSONArray对象,将获取到的一级选项数据填充进去,然后使用`response.getWriter().write()`将JSON字符串写入HTTP响应。这样,...

    太原理工大学WEB系统和技术试题(卷)2016年0425.doc

    get请求和post请求是两种常用的HTTP请求方法,get请求用于从服务器端检索数据,而post请求用于将数据提交到服务器端。 十、JavaBean使用 试题10中提到,下面哪一个是正确使用JavaBean的方式?答案是(A)。...

    弹出窗口取值并返回

    在IT领域,尤其是在Web开发中,"弹出窗口取值并返回"是一个常见的交互设计功能。这个过程涉及到在主窗口(或称为父页面)中触发一个弹出窗口(子页面),用户在子页面中输入信息,然后将这些信息传递回父页面。下面...

    ajax实例和取值

    `type: "post"` 表示 AJAX 请求使用 HTTP 的 POST 方法发送数据。POST 方法用于向服务器发送数据,适用于创建或更新资源。 **2\. `url` 属性** `url: "&lt;c:url value='/isoEmDeptAssess/indexDeptRanking'/&gt;"` 指定...

    .net 一般处理程序获取Http推送的包体Body

    实现了别的服务器通过Http协议接口推送到自己的服务器包体(body)接收代码的实现过程,我这里是用的.net的一般处理程序做的Http接口,调用时候无需定义参数,发布后访问文件全路径就可以获取对方传过来的包体全部...

    vue.js配合$.post从后台获取数据简单demo分享

    该方法属于jQuery的AJAX模块,适用于发送简单的GET或POST请求。其基本语法是:$.post(url, [data], [callback], [type]),其中url是请求的服务器地址,data是发送的数据,callback是请求成功后的回调函数,type是...

    jQuery 滚动投票程序,使用XML或动态取值

    2. 数据存储:投票数据可以存储在XML文件中,也可以通过动态取值从服务器获取。XML是一种结构化数据格式,易于解析和存储。 3. 动画效果:使用jQuery的动画方法,如`.animate()`,可以使投票过程更加生动,如投票...

    HTTP学习笔记

    HTTP消息有客户端到服务器的请求消息和从服务器到客户端的响应消息两部分组成。 1. HTTP请求 HTTP请求由三部分组成,分别是:请求行、消息报头(http header)、请求正文(http body)。在header和body之间有一个...

    Lotusscript代理获取url的传值及解码

    这段代码中,`session.DocumentContext` 获取当前文档上下文,而 `Request_Content(0)` 则是从 POST 请求中获取传入的参数。这里需要注意的是,`Request_Content` 函数默认是按照 HTTP 的默认编码格式(通常是 ISO-...

    同花顺HTTP行情接口规范 PDF

    - **请求参数**:POST请求中的一般形式为`key1=value1&key2=value2&keyN=valueN`,每个键值对之间通过"&"符号连接。 ##### 返回数据格式 - **市场信息** - **Method**:必须字段,用于指定请求的方法类型,此处应...

Global site tag (gtag.js) - Google Analytics