c java http通讯,c语言经过http请求javaee项目

问题一

c通过http调用java提供的方法,传送xml。遇到一个奇怪的问题。肉眼看到传输过来的xml是没有问题的。

传过来的xml,如下:

<?xml version="1.0" encoding="UTF-8"?>        13800009999        2013-03-21 12:00:00   

这段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]", "");解析正常。

具体哪些字符是非法的,刚才我想着通过[\\x20-\\x7e]这个正则取出xml里面到底是哪些字符非法。写了如下方法:

private static void getStrings(String str) {

Pattern p = Pattern.compile("[^\\x20-\\x7e]");

Matcher m = p.matcher(str);

ArrayList strs = new ArrayList();

while (m.find()) {

strs.add(m.group(0));

}

for (String s : strs){

System.out.println(s+"==");

}

}

输出的结果像一个空格。但是是不显示的。推测应该是从c传到java的过程中多了某个不可显示的字符在此也不必深究了,以后注意。

问题二

由于java项目是springMvc。所以控制层都交给spring管理。但是c过来的http。在spring管理的控制层中无法获取request.getInputStream()。最后无奈改成servlet。二者方法里面的代码完全一致。servlet正常获取。

原因至今不明。感谢这位仁兄给出的思路。解决了问题。

http://www.bitscn.com/pdb/java/200806/143983.html

客户端需要加如下代码:

java:httpURLConnection.setRequestProperty("content-type", "text/html");

c:ghttp_set_header(request, http_hdr_Content_Type, "text/html;charset=UTF-8");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值