WebService接口开发详解(源码)
2026/6/23 10:00:37 网站建设 项目流程


业务场景:给一家公司的两个系统之间做部分数据做同步,A系统中进行业务操作后同步到B系统中,这样就不需要B系统再次进行操作了。

开发方案:B系统搭建WebService服务器,A系统业务操作后通过发送请求将参数传入B系统中自动执行业务操作。

第一步,搭建WebService服务,建立WebService接口及实现类:

/**
* WebService接口
* @date 2018年5月25日09:09:24
* @author 拽拽很乖
*/
public interface IOrderPluginWebService {
/**
* webService接口
* @author 拽拽很乖
* @date 2018年5月25日09:15:18
* @param type 类型
* @param pk_order 主键
* @return 是否同步成功 :
* true 同步成功
* false 同步失败
*/
public boolean sendDataToOrderPlugin(String type,String[] pk_order);
}
/**
* webService接口实现类
* @author 拽拽很乖
* @date 2018年5月25日09:27:18
*/
public class OrderReportWebServiceImpl implements IOrderPluginWebService {
@Override
public boolean sendDataToOrderPlugin (String type,String[] pk_order) {
//业务操作,逻辑处理
}
}
因为本次主要说明WebService服务搭建以及连接,业务逻辑处理就不贴上来了。

第二步、创建wsdl文件及upm文件:

右键接口选择Generate WSDL以及Publish Web Service,创建好wsdl文件以及upm文件。当然也可以在接口上添加@WebService注解,没有upm自动插件一般用注解。

第三步:浏览器测试是否发布成功:


启动服务端代码,打开IE浏览器输入地址测试,成功后就可以看到刚才发布的接口,点开后或看到如下图所示的xml格式网页,表示WebService接口发布成功。


第四步:SOAPUI测试接口:

打开soapUI工具,新建测试工程,右键Projects新建一个SOAP项目,project name随意填写,WSDL写上述图所示浏览器中测试的带有"?wsdl"结尾的地址。


填写参数后就可以测试了:启动后WebService实现类就可以接到测试额参数,至此,WebService服务端搭建成功。


第五步:发送soap请求:

/**
* 发送SOAP请求
* @param xmlString XML文件
* @return webService返回结果
* @throws Exception
* @author 拽拽很乖
* @date 2018年5月30日10:30:21
*/
private String sendPost(String xmlString)throws Exception {
//HttpURLConnection 发送SOAP请求
URL url = new URL(URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type","text/xml; charset=utf-8");
‍ conn.setRequestMethod("POST");
‍ conn.setUseCaches(false);
‍ conn.setDoInput(true);
‍ conn.setDoOutput(true);
‍ conn.setConnectTimeout(30*1000);
‍ conn.setReadTimeout(30*1000);
‍ DataOutputStream dos = new
DataOutputStream(conn.getOutputStream());
‍ dos.write(xmlString.getBytes("utf-8"));
‍ dos.flush();
‍ BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
‍ String line = null;
‍ StringBuffer strBuf = new StringBuffer();
‍ while ((line = reader.readLine()) != null) {
‍‍ s‍trBuf.append(line);
‍ }
‍ dos.close();
‍ reader.close();
‍ return strBuf.toString();
}
其中参数XML就按照soapUI测试时的xml格式配置即可,需要传入的参数写入对应的位置即可,URL就是soapUI测试时的URL。

/**
* webService URL
* @author 拽拽很乖
* @date 2018年5月30日10:36:13
*/
private static final String URL ="http://10.31.0.67:88/uapws/service/IOrderPluginWebService";
/**
* @author 拽拽很乖
* @date 2018年5月29日17:17:21
* @param type
* 打开或关闭类型
* @param pk_order
* 采购订单主键
* @return soap请求XML
* @throws Exception
*/
private String CreateOrder(String type,String pk_order) throws Exception {
‍ StringBuffer xmlString = new StringBuffer();
‍ DocumentBuilderFactory fct = DocumentBuilderFactory.newInstance();
‍ DocumentBuilder buil = fct.newDocumentBuilder();
‍ Document doc = buil.newDocument();
‍ Element ps = doc.createElement("soapenv:Envelope");
‍ Element billHeader = doc.createElement("soapenv:Header");
‍ Element billBody = doc.createElement("soapenv:Body");
‍ Element itemIor = doc.createElement("ior:sendDataToOrderPlugin");
Attr soapenv = doc.createAttribute("xmlns:soapenv");
‍ ‍Attr ior = doc.createAttribute("xmlns:ior");
‍‍ doc.appendChild(ps);
‍‍ ps.appendChild(billHeader);
‍ ps.appendChild(billBody);
‍ ps.setAttributeNode(soapenv);
‍ ps.setAttributeNode(ior);
‍ billBody.appendChild(itemIor);
‍ Text soapenv_v = doc.createTextNode("http://schemas.xmlsoap.org/soap/envelope/");
‍ Text ior_v = doc.createTextNode("http://orderreport.pu.itf.nc/IOrderPluginWebService");
‍ soapenv.appendChild(soapenv_v);
‍ Element str_v = doc.createElement("string");
‍ Text code_v = doc.createTextNode(type);
‍ toXML(itemIor, str_v, code_v);
‍ Element strItem_v = doc.createElement(
"stringItem");
‍ Text pk_order_v = doc.createTextNode(
pk_order.toString());
‍ toXML(itemIor, strItem_v, pk_order_v);
‍ XML_VoucherTranslator.
writeXMLFormatString(xmlString, doc, -2);
‍ return xmlString.toString();
}
private static void toXML(Element e, Element e1, Text text) {
‍ e.appendChild(e1);
‍ e1.appendChild(text);
}
第六步:测试:

开启两端的代码,先运行WebService服务端代码,再运行客户端(请求)代码进行测试。


总结:

WebService是是独立的、可跨平台、跨语言、低耦合的非常强大的web应用程序,通过XML和SOAP更加灵活。减少了不少传统的接口开销,开发便捷。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询