形容一下业务需求,然后记录方法。
业务需求:
需要向某个固定的URL发送一个带参数的HTTP请求。并解析返回的XML数据,取到有用数据。
例如:
我要向http://111.12.1.2/MWBusinessModel/xmlrpc发送一个含有参数user=test的请求后,会返回如下xml,
class="xml" name="code"><?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><![CDATA[F13D6E31-6687-49F1-9695-A582775B199A]]></value></param></params></methodResponse>
?
想获取"F13D6E31-6687-49F1-9695-A582775B199A"的值。
?
代码:
/** * 取得Content * * @param param 需要向请求中传的参数 * @return */ public String getContent(String param) { private static final String XML_RPC_URL = "http://111.2.35.5/MWBusinessModel/xmlrpc"; String xmlResp = null; try { xmlResp = hc.doPost(XML_RPC_URL, param); } catch (ClientProtocolException e) { logger.error("", e); } catch (IOException e) { logger.error("", e); } Document doc = null; try { //获得document doc = DocumentHelper.parseText(xmlResp); } catch (DocumentException e) { logger.error("", e); } Element methodResponseNode = doc.getRootElement(); Element faultNode = methodResponseNode.element("fault"); if (faultNode != null) { return null; } //获取params节点下param节点下的value的值(这种方法自动去掉<![CDATA[]字符串) Element paramsNode = methodResponseNode.element("params"); Element paramNode = paramsNode.element("param"); Element valueNode = paramNode.element("value"); return valueNode.getText(); }
?