2.以下是通过SoapUI测试接口的数据截图:
3.代码实例:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Iterator;
public class WebService{
public static void main(String[] args) {
WebService webService = new WebService();
String result =webService.addCoin();
System.out.println("result:"+result);
}
public String addCoin() {
//服务访问地址
String urlStr = "XXXXX";
String paraXml = getAccInfoXml();
//方法
String soapAction = "XXXX";//soapAction
OutputStream out = null;
try {
URL url = new URL(urlStr);
HttpURLConnection con;
con = (HttpURLConnection) url.openConnection();
//是否具有输出参数
con.setDoOutput(true);
//是否具有输入参数
con.setDoInput(true);
//请求方式
con.setRequestMethod("POST");
//是否缓存
con.setUseCaches(false);
//设置请求头
con.setRequestProperty("Content-type", "text/xml; Encoding=GBK");
con.setRequestProperty("SOAPAction", soapAction);
//获得输出流
out = con.getOutputStream();
con.getOutputStream().write(paraXml.getBytes());
out.flush();
out.close();
//获得服务端响应状态码
int code = con.getResponseCode();
String tempString = null;
StringBuffer sb1 = new StringBuffer();
if (code == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
if (null != reader) {
reader.close();
}
} else {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getErrorStream(), "UTF-8"));
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
if (null != reader) {
reader.close();
}
}
//响应报文
String respData = sb1.toString();
Document doc = null;
doc = DocumentHelper.parseText(respData); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
Iterator iter = rootElt.elementIterator("Body"); // 获取根节点下的子节点Body
// 遍历Body节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
Iterator itr = recordEle.elementIterator("AddPointsResponse"); // 拿到Body节点下的子节点AddPointsResponse
// 遍历Body节点下的AddPointsResponse节点
while (itr.hasNext()) {
Element element = (Element) itr.next();
Iterator itrs = element.elementIterator("procCode"); // 拿到AddPointsResponse节点下的子节点procCode
while (itrs.hasNext()) {
Element elemen = (Element) itrs.next();
if(elemen.getName().equals("procCode")) {
return elemen.getText();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "添加失败";
}
public String getSoapHeader() {
//上面代码为从缓存中取到我们需求传递到认证头的数据 下面开始添加认证头
StringBuffer soapHeader = new StringBuffer();
soapHeader.append("<soapenv:Header>");
soapHeader.append("<web:SessionToken></web:SessionToken>");
soapHeader.append("<web:SessionType>None</web:SessionType>");
soapHeader.append("<web:PasswordText>INFICRM</web:PasswordText>");
soapHeader.append("<web:UsernameToken>INFI</web:UsernameToken>");
soapHeader.append("</soapenv:Header>");
return soapHeader.toString();
}
//请求参数正文拼接
public String getAccInfoXml() {
StringBuffer template = new StringBuffer();
String remark = "测试积分上限";
String s= null;
try {
//中文乱码转换
s = new String(remark.getBytes("GBK"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String header = getSoapHeader();
template.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://siebel.com/webservices\" xmlns:inf=\"http://siebel.com/xml/INFIPointContral\">");
template.append(header);
template.append("<soapenv:Body>");
template.append("<inf:AddPoints>");
template.append("<pointValue>XXX</pointValue>");
template.append("<remark>"+s+"</remark>");
template.append("<activte_type>WX02</activte_type>");
template.append("<interactivate_date>XXX</interactivate_date>");
template.append("<source_system>XXX</source_system>");
template.append("<cardNo>XXXXX</cardNo>");
template.append("<integral_type>5</integral_type>");
template.append("</inf:AddPoints>");
template.append("</soapenv:Body>");
template.append("</soapenv:Envelope>");
return template.toString();
}
}