一个关于在vertx中使用jersey框架接收text/xml类型的问题

使用vertx+jersey4.5.2做客户端api接口工程,在做微信回调的时候,其返回的数据Content-Type为text/xml,使用Consumes(MediaType.TEXT_XML)获取不到body中的数据,如下。

    @Path("wxPayNotify")
    @POST 
    @Consumes(MediaType.TEXT_XML)
    @Produces(MediaType.TEXT_XML)
    public String wxPayNotify(@Context HttpServerRequest request,String xml){...}

我做过其他的测试:使用@Consumes(MediaType.APPLICATION_XML)或者@Consumes(MediaType.TEXT_PLAIN),然后客户端用这两种类型是能获取到的,唯独MediaType.TEXT_XML获取不到,但是微信回调使用的是MediaType.TEXT_XML如何才能获取到MediaType.TEXT_XML类型的数据


通过debug调试,发现在DefaultJerseyHandler中的shouldReadData方法中,没有允许处理MediaType.TEXT_XML,添加上之后即可。

之前的代码为:

// Allow text/plain
if (MediaType.TEXT_PLAIN_TYPE.getType().equals(mediaType.getType())
     && MediaType.TEXT_PLAIN_TYPE.getSubtype().equals(mediaType.getSubtype())) {
     return true;
}

修改后的代码为:

// Allow text/plain,text/xml,text/json
if (MediaType.TEXT_PLAIN_TYPE.getType().equals(mediaType.getType())) {
   return true;
}
这样就允许 text/plain,text/xml,text/json等以text开头的Content-Type。


note:修改某些开源的jar包中源文件之后,既可以用编译后的class文件替换掉原来的文件,又可以将源文件拷贝至我们的源文件中,修改后要保持报名和类名一样,这样在加载的时候就会先加载我们的文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值