问题一
c通过http调用java提供的方法,传送xml。遇到一个奇怪的问题。肉眼看到传输过来的xml是没有问题的。
传过来的xml,如下:
<?xml version="1.0" encoding="UTF-8"?><SmsReq> <Tel_No>13800009999</Tel_No> <Login_Tm>2013-03-21 12:00:00</Login_Tm> </SmsReq>
这段xml我放到jmeter里面请求我的java服务和我自己用java程序模拟http请求直接将这段字符串发过来,也都是可以解析的。
唯独通过c过来后。DocumentHelper.parseText(rsXml); 报如下错误。
org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in trailing section. Nested exception: Content is not allowed in trailing section.
最后怀疑xml中有什么不显示的非法字符导致无法解析。随加replaceAll("[^\\x20-\\x7e]", "");解析正常。
具体哪些字符是非法的,至今未明。后续有时间搞明白。
问题二
由于java项目是springMvc。所以控制层都交给spring管理。但是c过来的http。在spring管理的控制层中无法获取request.getInputStream()。最后无奈改成servlet。二者方法里面的代码完全一致。servlet正常获取。
原因至今不明。由于c是另一个项目组的,不好意思让人老是给我发请求。网上看到的有用的结论
http://www.bitscn.com/pdb/java/200806/143983.html 但是由于c那边的哥们对代码不是很熟。这个也未验证。 后续有时间补上