1.调用接口方法,使用HttpClient,请求报文为xml格式(返回数据 xml,中间使用标签包含json数据)
//传送报文和路径进行接口调用
public String send(String url, String soapXmlData) {
String responseBody = "";
PostMethod post = new PostMethod(url);
System.out.println("接口发送内容为:" + soapXmlData);
int state;
try {
RequestEntity requestEntity = new StringRequestEntity(soapXmlData,"text/xml","UTF-8");
post.setRequestEntity(requestEntity);
HttpClient httpClient = new HttpClient();
state = httpClient.executeMethod(post);
responseBody = new String(post.getResponseBodyAsString());
System.out.println("调用状态是:" + state);
System.out.println("返回消息是:" + responseBody);
} catch (Exception e) {
e.printStackTrace();
throw new MisException(e);
}
return responseBody;
}
//对返回数据解析成map(返回xml的json数据,解析)
//返回map类型的json数据,但需要进行解析xml标签获取json数据
public Map sendXmlData(String url, String soapXmlData){
Map respDataMap = new HashMap();
String respdata = "";
try {
respdata = send(url, soapXmlData.toString());
respDataMap = XMLUtil.doXMLParse(respdata);
} catch (Exception e){
e.printStackTrace();
}
return respDataMap;
}
2.使用xml报文,将报文中参数设置成参数,传map进行进行对应
/**
* 根据模板字符串生成内容
* @param strTemplate 模板信息
* @param map 数据信息
* @return
*/
public static String publishHtml(String strTemplate, Map<String, Object> map) {
//Open Declaration freemarker.template.Configuration
Configuration cfg = new Configuration();
String content = null;
StringWriter stringWriter = new StringWriter(); // 将数据模型和模板合并
//获取编码格式
String encoding ="gbk";
try {
cfg.setTemplateLoader(new StringTemplateLoader(strTemplate));
cfg.setDefaultEncoding(encoding);
cfg.setOutputEncoding(encoding);
cfg.setLocale(Locale.CHINA);
cfg.setNumberFormat("0.####");
cfg.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX);
Template template = cfg.getTemplate("");
template.setEncoding(encoding);
template.process(map, stringWriter);
content = stringWriter.toString();
stringWriter.flush();
} catch (IOException e) {
throw new MisException(e);
} catch (TemplateException e) {
throw new MisException(e);
} finally {
if (stringWriter != null) {
try {
stringWriter.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
return content;
}
–报文
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webService.udsp.pactera.com/">
<soapenv:Header>
<userInfo>
<userId>${USERID}</userId>
<userPwd>${USERPWD}</userPwd>
</userInfo>
</soapenv:Header>
<soapenv:Body>
<web:CommExecute>
<web:arg0>${CODE}</web:arg0>
<web:arg1>
<web:entry>
<web:key>flowId</web:key>
<web:value>${FLOWID}</web:value>
</web:entry>
<web:entry>
<web:key>timeLimit</web:key>
<web:value>${TIMELIMIT}</web:value>
</web:entry>
<web:entry>
<web:key>userIp</web:key>
<web:value>${USERIP}</web:value>
</web:entry>
<web:entry>
<web:key>sysId</web:key>
<web:value>${SYSID}</web:value>
</web:entry>
<web:entry>
<web:key>partId</web:key>
<web:value>${PARTID}</web:value>
</web:entry>
<web:entry>
<web:key>queryType</web:key>
<web:value>${TYPE}</web:value>
</web:entry>
<web:entry>
<web:key>name</web:key>
<web:value>${NAME}</web:value>
</web:entry>
<web:entry>
<web:key>number</web:key>
<web:value>${NUMBER}</web:value>
</web:entry>
<web:entry>
<web:key>dataType</web:key>
<web:value>${DATATYPE}</web:value>
</web:entry>
<web:entry>
<web:key>entryId</web:key>
<web:value>${ENTRYID}</web:value>
</web:entry>
<web:entry>
<web:key>reqType</web:key>
<web:value>${REQTYPE}</web:value>
</web:entry>
</web:arg1>
</web:CommExecute>
</soapenv:Body>
</soapenv:Envelope>
//获取当前服务器ip
InetAddress ia=InetAddress.getLocalHost();
String localip = ia.getHostAddress();
Map<String, Object> gysInfo = new HashMap<String, Object>();
gysInfo.put("NAME", jc_gysxx.getGsmc());
gysInfo.put("USERID", Constants_tyc.DSJ_FH_USERID);
gysInfo.put("USERPWD", Constants_tyc.DSJ_FH_USERPWD);
gysInfo.put("CODE", Constants_tyc.DSJ_FH_GJZ_CODE);
gysInfo.put("RANGE", Constants_tyc.DSJ_FH_RANGE);
gysInfo.put("USERIP", localip);//当前服务器ip
gysInfo.put("SYSID", "CPM");//系统编号
gysInfo.put("PARTID", "000000");//部门编号
gysInfo.put("PAGENO", Constants_tyc.DSJ_FH_RANGNO);
gysInfo.put("TIMELIMIT", Constants_tyc.DSJ_FH_TIMELIMIT_GJZ);
/**
* xml转对象
*
* @param xml
* @param clazz
* @return
*/
public static Object xml2java(String xml, Class clazz) {
try {
JAXBContext content = JAXBContext.newInstance(clazz);
Unmarshaller m = content.createUnmarshaller();
StringReader sr = new StringReader(xml);
Object t = m.unmarshal(sr);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}