今天在移动研究院与华为的接口调试 ,比较顺利。
调试过程中必然不会一帆风顺,所以需要我这里能够登陆外网,查查资料、收收邮件。实验室的服务器有一个外网地址,而且是linux操作系统。ok,一切顺理成章,squid做代理。能够这么顺利的配置squid一是因为配置相对简单,二还要拜公司所赐,让我不止一次的配置了squid,一切源于对知识的渴望,哈哈!
调试华为的接口,能够得到返回的XML,凡是解析的时候就有错误。很奇怪,解析XML的代码我在公司就测试通过了测试,为什么这里不行呢?找了很长时间的问题,也没有能解决!突然发现待解析的XML文件的特殊性:
<? xml version="1.0' encoding="GBK" ?> < returncode > 10405 </ returncode >这个XML文件开头有一大片空白行,于是删除之,再解析一切ok。这才想起来XML对格式的要求很严格,第一个标签“<?xml version="1.0' encoding="GBK"?>”必须要顶格且在它之前不能有空行。于是改变写XML的那段程序,trim掉一切空白行,ok,调试通过。
在此放上java解析XML的一个例子:
<%@ page import="javax.xml.parsers.DocumentBuilderFactory"%> <%@ page import="javax.xml.parsers.DocumentBuilder"%> <%@ page import="org.w3c.dom.NodeList"%> <%@ page import="org.w3c.dom.Document"%> <%@ page import="org.xml.sax.SAXParseException"%> …… DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(file); // file是待解析的文件名 NodeList nl = doc.getElementsByTagName( " returncode " ); String orderRingResponseCode = "" ; for ( int i = 0 ;i < nl.getLength();i ++ ) { orderRingResponseCode = doc.getElementsByTagName("returncode").item(i).getFirstChild().getNodeValue(); IvrFlowLogger.info("reponse returnCode : " + orderRingResponseCode.trim()); } ……完工!回家
------------写于移动研究院 2007-01-25