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

从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;
		}
		
	}

 

分享到:
评论

相关推荐

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

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

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

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

    基于js+springboot+mybatis+mysql的在线问卷系统,采用前后端分离技术,支持跨域访问

    HTTP POST 请求示例 { "username": "Alice", "password": "123456", "email": "alice@gmail.com" } 请求参数 参数 类型 是否必须 取值范围 说明 username String Y 2-64个字符 用户名(昵称) password String Y...

    微信小程序:input输入框和form表单几种传值和取值方式 POST和GET请求方式的hea

    1、传值:index下标传值、页面navigator传值 (此图片来源于网络,如有侵权,请联系删除! )(此图片来源于网络,如有侵权,请联系删除! )(此图片来源于网络,如有侵权,请联系删除! )(此图片来源于网络,如有侵权,请...

    自己实现的文件上传代码

    主要是通过post请求中使用了enctype="multipart/form-data"上传文件,并且能够解析出input文本框中的name属性值以及其value.通过对Http 头文件信息解析以及request流的解析得到参数信息以及文件内容,并对文件进行...

    XMLHttpRequest

    取值: 状态码 名称 描述 0 未初始化 默认状态,XMLHttpRequest刚刚被创建 1 打开 调用了对象的open方法,但还没有调用send. 准备好要请求的服务器地址,但还没请求。 2 请求 调用了send方法。已经向服务器...

    python+requests+pytest 接口自动化框架(6)

    3.2.post请求 传json格式,需要使用json传参 传表单格式,需要使用data传参 3.3.文件上传:使用files传参 4.接口关联 多种提取方式(提取多个值): 1.正则表达式和jsonpath表达式提取 extract: access_token:...

    PHP培训教程之AJAX技术.docx

    1、AJAX初步认识 AJAX的全称... readyState属性请求的状态有5个可取值0=未初始化,1=正在加载,2=以加载,3=交互中,4=完成 responseText属性器的响应,表示为一个串 reponseXML属性器的响应,表示为XML

    .net core在服务器端获取api传递的参数过程

    主要介绍了.net core在服务器端获取api传递的参数过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    浅析PHP微信支付通知的处理方式

    复制代码 代码如下: 1,Content- Type取值为application/x-www-form-urlencoded时,php会将http请求body相应数据会填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。(其实,除了该Content...

    report 开源的访问层中间件,基于java平台

    b)@HTTP:标注在需要被请求的方法上,value属性值为请求时的方法名,supportMethod属性值为请求类型,默认支持get和post两种,兼容RquestMapping c)@ReportParam:标注在需要注入方法的参数上,继承至ReportRequest的...

    微信小程序入门《五》登录注册

    主要有表单的验证,错误信息的提示,form表单的取值,get / post 请求 ,反馈交互提示框,页面跳转 ...       这章介绍小程序的登录注册页面。主要有表单的验证,错误信息的提示,form表单的取值,get / post ...

    ThinkPHP的I方法使用详解

    ThinkPHP的I方法是众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: I(‘变量类型.变量名’,[‘默认值’],[‘过滤方法’]) ...

    如何发送HTML表单数据

    整个web都是基于一种基本的客户端/服务器架构,该架构可以归纳如下:一个客户端(通常是Web浏览器)使用HTTP协议发送一个请求给服务器(通常是web服务器程序,譬如Apache,Nginx,IIS,Tomcat等等),而服务器则以相同的...

    EL表达式 (详解)

    ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话 范围内的变量.applicationScope...

    html入门到放弃笔记

    1、提交用户请求 (UA : User Agent) 2、作为HTML 以及 脚本执行的 解释器 3、以图形化的方式显示web页面 2、主要浏览器产品 1、Microsoft Internet Explorer (IE) 2、Mozilla Firefox 3、Google Chrome 4、...

    JSP向后台传递参数的四种方式总结

    通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的参数,以便得到相应的值。 客户端代码: Java代码 &lt;input type=”hidden” name=”id” value=””/&gt; ...

    微信小程序入门(七)登录注册

    主要有表单的验证,错误信息的提示,form表单的取值,get / post 请求 ,反馈交互提示框,页面跳转 以及 页面UI。 效果图: (此图片来源于网络,如有侵权,请联系删除! ) 注册页面:基本内容有账号,密码,确认密码...

    基于Python的接口自动化框架+源代码+文档说明

    - **method**:请求方式(目前只支持GET,POST) - **headers**:请求头,格式为 {"key","value"} - **cookies**:Cookies就是Cookies啦,格式为 {"key":"value"} - **para -------- 该资源内项目源码是个人的毕设,代码都...

    vue.js学习相关文件-测试代码

    post请求测试文件:test2/post.html vue初探:test2/helloVue.html,test2/helloVue2.html input 和 textarea 元素中使用 v-model 实现双向数据绑定:test2/inputAndtextarea.html 两个按钮用于切换不同的列表布局:...

Global site tag (gtag.js) - Google Analytics