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

debugmonkey 2014-04-13 08:47:18
POST的包是xml包 如果全部是英文的话处理正常 但是只要xml里存在中文 则直接收不到 xml utf-8编码 wireshark抓包正常 但是服务器返回http 400错误
...全文
1047 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,也有中文,没有你这种问题。 你把代码贴上来看看.

67,550

社区成员

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

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