Jersey处理POST请求 如果POST包里有中文 则收不到请求

debugmonkey 2014-04-13 08:47:18
POST的包是xml包 如果全部是英文的话处理正常 但是只要xml里存在中文 则直接收不到 xml utf-8编码 wireshark抓包正常 但是服务器返回http 400错误
...全文
1041 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑洞之谜 2015-04-08
  • 打赏
  • 举报
回复
问题解了没?
debugmonkey 2014-04-15
  • 打赏
  • 举报
回复
引用 5 楼 dokia123 的回复:
[quote=引用 3 楼 debugmonkey 的回复:] [quote=引用 1 楼 dokia123 的回复:] 这种情况应该跟中文没关系吧?我之前用jersey,也有中文,没有你这种问题。 你把代码贴上来看看.
@POST @Produces({MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_XML}) @Path(value="saveObject") public void save(List<Object> dtos) throws Exception { service.saveObject(dtos); } 直接执行不到这个地方。感觉像是JAXB还原对象时出错了,求解……[/quote] 还有就是你先测试值保存一个对象,就是这样

public void save(Object dtos) throws Exception {
service.saveObject(dtos);
}
看能不能保存成功,先排除是不是List的问题。然后再继续排除其他问题,想我上面说的那样。[/quote] Object只是伪代码 现在问题基本确定了 编码问题 如果是GET请求 JAXB返回的xml是UTF-8编码的 但是如果是我POST一个xml 里面有中文 即使xml指定UTF-8 以及HTTP Header ContentType也只定UTF-8编码 JAXB仍然无法根据xml生成对象 如果GBK编码就没问题 但是不想用GBK 现在的问题是 1.能否通过设置、配置,让JAXB解析时自动使用UTF-8,上面代码也不用改动 2.如果上述代码无法实现,即1走不通,那么用 JAXBContext context = JAXBContext.newInstance(class); Unmarshaller us = context.createUnmarshaller(); us.unmarshal() 从InputStream读取这样的方法也可。但是问题来了我是希望生成一个List而不是仅仅一个对象。问题是如何生成List呢? 3.退一步说最坏的打算就是xml中可能存在中文的部分base64编码了
dokia123 2014-04-15
  • 打赏
  • 举报
回复
引用 3 楼 debugmonkey 的回复:
[quote=引用 1 楼 dokia123 的回复:] 这种情况应该跟中文没关系吧?我之前用jersey,也有中文,没有你这种问题。 你把代码贴上来看看.
@POST @Produces({MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_XML}) @Path(value="saveObject") public void save(List<Object> dtos) throws Exception { service.saveObject(dtos); } 直接执行不到这个地方。感觉像是JAXB还原对象时出错了,求解……[/quote] 还有就是你先测试值保存一个对象,就是这样

public void save(Object dtos) throws Exception {
service.saveObject(dtos);
}
看能不能保存成功,先排除是不是List的问题。然后再继续排除其他问题,想我上面说的那样。
dokia123 2014-04-15
  • 打赏
  • 举报
回复
引用 3 楼 debugmonkey 的回复:
[quote=引用 1 楼 dokia123 的回复:] 这种情况应该跟中文没关系吧?我之前用jersey,也有中文,没有你这种问题。 你把代码贴上来看看.
@POST @Produces({MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_XML}) @Path(value="saveObject") public void save(List<Object> dtos) throws Exception { service.saveObject(dtos); } 直接执行不到这个地方。感觉像是JAXB还原对象时出错了,求解……[/quote] 你这里List里面不能写Object吧?要写具体要保存的类型,报的异常是不是跟JAXB相关?
debugmonkey 2014-04-14
  • 打赏
  • 举报
回复
引用 1 楼 dokia123 的回复:
这种情况应该跟中文没关系吧?我之前用jersey,也有中文,没有你这种问题。 你把代码贴上来看看.
@POST @Produces({MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_XML}) @Path(value="saveObject") public void save(List<Object> dtos) throws Exception { service.saveObject(dtos); } 直接执行不到这个地方。感觉像是JAXB还原对象时出错了,求解……
别闹腰不好 2014-04-13
  • 打赏
  • 举报
回复
若果你用post 方法串中文就得在前台转下码,后台 接受到在转回来。这样比较麻烦。 你可以直接用 $.ajax ()方法 ,传参直接用“{}"这种 ,不要拼接url, 这样就可以穿中文 ,特殊字符什么的都没问题。
dokia123 2014-04-13
  • 打赏
  • 举报
回复
这种情况应该跟中文没关系吧?我之前用jersey,也有中文,没有你这种问题。 你把代码贴上来看看.
spring加载restful(文档+程序源码) 通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(如,GET、POST、PUT或DELETE)来操作一个或多个资源。通常,GET是用于获取或列出一个或多个资源,POST用于创建,PUT用于更新或替换,而DELETE则用于删除资源。   例如,GET http://host/context/employees/12345将获取ID为12345的员工的表示。这个响应表示可以是包含详细的员工信息的XML或ATOM,或者是具有更好UI的JSP/HTML页面。您看到哪种表示方式取决于服务器端实现和您的客户端请求的MIME类型。   RESTful Web Service是一个使用HTTP和REST原理实现的Web Service。通常,一个RESTful Web Service将定义基本资源URI、它所支持的表示/响应MIME,以及它所支持的操作。   本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。   本文假定您是熟悉REST基本知识的。   Spring 3的REST支持   在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和JerseyJersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。   Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。   Spring REST支持的主要特性包括:   注释,如@RequestMapping 和 @PathVariable,支持资源标识和URL映射   ContentNegotiatingViewResolver支持为不同的MIME/内容类型使用不同的表示方式   使用相似的编程模型无缝地整合到原始的 MVC 层   创建一个示例RESTful Web Service   本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,本文还使用一些代码片断来帮助理解这些概念。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧