private String queryInterfaceResponse(InterfaceConfig config)
{
StringBuffer sb = new StringBuffer(128);
String format = "UTF-8";
if (config == null)
return null;
if ((config.getFormat() != null) && (!"".equals(config.getFormat()))) {
format = config.getFormat();
}
HttpURLConnection c = null;
BufferedWriter writer = null;
BufferedReader br = null;
URL url = null;
try {
String systemid = SystemParamUtil.getParameterById("903909", "903");
if ("1".equals(systemid))
{
url = new URL(config.getServerurl());
}
else
{
url = new URL(config.getPubdynachar9());
}
c = (HttpURLConnection)url.openConnection();
c.setRequestMethod(config.getRequestmethod());
c.setConnectTimeout(config.getTimeout());
c.setReadTimeout(config.getTimeout());
c.setDoInput(true);
c.setDoOutput(true);
if ((config.getPubdynachar1() != null) && (!"".equals(config.getPubdynachar1()))) {
c.setRequestProperty(config.getPubdynachar1(), config.getPubdynachar2() == null ? "" : config.getPubdynachar2().trim());
}
if ((config.getPubdynachar3() != null) && (!"".equals(config.getPubdynachar3()))) {
c.setRequestProperty(config.getPubdynachar3(), config.getPubdynachar4() == null ? "" : config.getPubdynachar4().trim());
}
if ((config.getPubdynachar5() != null) && (!"".equals(config.getPubdynachar5()))) {
c.setRequestProperty(config.getPubdynachar5(), config.getPubdynachar6() == null ? "" : config.getPubdynachar6().trim());
}
if ((config.getPubdynachar7() != null) && (!"".equals(config.getPubdynachar7()))) {
c.setRequestProperty(config.getPubdynachar7(), config.getPubdynachar8() == null ? "" : config.getPubdynachar8().trim());
}
writer = new BufferedWriter(new OutputStreamWriter(c.getOutputStream(), format));
writer.write(config.getReqxml());
writer.flush();
br = new BufferedReader(new InputStreamReader(c.getInputStream(), format));
String line;
while ((line = br.readLine()) != null)
sb.append(line);
}
catch (MalformedURLException e)
{
logger.error("queryInterfaceResponse异常,原因:" + e);
} catch (ProtocolException e) {
logger.error("queryInterfaceResponse异常,原因:" + e);
} catch (IOException e) {
logger.error("queryInterfaceResponse异常,原因:" + e);
}
finally
{
try {
if (writer != null) writer.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (writer != null) writer.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (c != null) c.disconnect();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (br != null) br.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
}
return sb.toString();
}
private Map<String, Element> toParserMap(String resXML, InterfaceConfig config)
{
Map map = new HashMap();
try {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(new ByteArrayInputStream(resXML.getBytes(config.getFormat())));
Element root = doc.getRootElement();
if (root == null) {
return map;
}
List nodes = root.getChildren();
for (Element n : nodes) {
if (n == null) {
break;
}
if ("Body".equals(n.getName())) {
List multeRefs = n.getChildren();
for (Element m : multeRefs) {
if (m.getName().endsWith("Response"))
map.put("response", m);
else {
map.put(m.getAttributeValue("id"), m);
}
}
}
}
}
catch (Exception e)
{
logger.error("将返回报文节点,转化为map 异常,原因:" + e);
}
return map;
}
Map bodyMap = toParserMap(resXml, config);
Element response = (Element)bodyMap.get("response");
{
StringBuffer sb = new StringBuffer(128);
String format = "UTF-8";
if (config == null)
return null;
if ((config.getFormat() != null) && (!"".equals(config.getFormat()))) {
format = config.getFormat();
}
HttpURLConnection c = null;
BufferedWriter writer = null;
BufferedReader br = null;
URL url = null;
try {
String systemid = SystemParamUtil.getParameterById("903909", "903");
if ("1".equals(systemid))
{
url = new URL(config.getServerurl());
}
else
{
url = new URL(config.getPubdynachar9());
}
c = (HttpURLConnection)url.openConnection();
c.setRequestMethod(config.getRequestmethod());
c.setConnectTimeout(config.getTimeout());
c.setReadTimeout(config.getTimeout());
c.setDoInput(true);
c.setDoOutput(true);
if ((config.getPubdynachar1() != null) && (!"".equals(config.getPubdynachar1()))) {
c.setRequestProperty(config.getPubdynachar1(), config.getPubdynachar2() == null ? "" : config.getPubdynachar2().trim());
}
if ((config.getPubdynachar3() != null) && (!"".equals(config.getPubdynachar3()))) {
c.setRequestProperty(config.getPubdynachar3(), config.getPubdynachar4() == null ? "" : config.getPubdynachar4().trim());
}
if ((config.getPubdynachar5() != null) && (!"".equals(config.getPubdynachar5()))) {
c.setRequestProperty(config.getPubdynachar5(), config.getPubdynachar6() == null ? "" : config.getPubdynachar6().trim());
}
if ((config.getPubdynachar7() != null) && (!"".equals(config.getPubdynachar7()))) {
c.setRequestProperty(config.getPubdynachar7(), config.getPubdynachar8() == null ? "" : config.getPubdynachar8().trim());
}
writer = new BufferedWriter(new OutputStreamWriter(c.getOutputStream(), format));
writer.write(config.getReqxml());
writer.flush();
br = new BufferedReader(new InputStreamReader(c.getInputStream(), format));
String line;
while ((line = br.readLine()) != null)
sb.append(line);
}
catch (MalformedURLException e)
{
logger.error("queryInterfaceResponse异常,原因:" + e);
} catch (ProtocolException e) {
logger.error("queryInterfaceResponse异常,原因:" + e);
} catch (IOException e) {
logger.error("queryInterfaceResponse异常,原因:" + e);
}
finally
{
try {
if (writer != null) writer.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (writer != null) writer.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (c != null) c.disconnect();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
try
{
if (br != null) br.close();
}
catch (Exception e) { logger.error("queryInterfaceResponse异常,原因:" + e); }
}
return sb.toString();
}
private Map<String, Element> toParserMap(String resXML, InterfaceConfig config)
{
Map map = new HashMap();
try {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(new ByteArrayInputStream(resXML.getBytes(config.getFormat())));
Element root = doc.getRootElement();
if (root == null) {
return map;
}
List nodes = root.getChildren();
for (Element n : nodes) {
if (n == null) {
break;
}
if ("Body".equals(n.getName())) {
List multeRefs = n.getChildren();
for (Element m : multeRefs) {
if (m.getName().endsWith("Response"))
map.put("response", m);
else {
map.put(m.getAttributeValue("id"), m);
}
}
}
}
}
catch (Exception e)
{
logger.error("将返回报文节点,转化为map 异常,原因:" + e);
}
return map;
}
Map bodyMap = toParserMap(resXml, config);
Element response = (Element)bodyMap.get("response");