TIPTOP 调用其他系统的webservice案例

TIPTOP 调用其他系统的webservice案例

本案例主要是解决TIPTOP ERP调用其他系统的接口进行的集成开发,也就是当ERP作为客户端时候,它如何去调用其他系统的Webservice地址进行ERP操作过程与其他系统的数据交互操作;

1、目前常见的是调用方式是通过以下方式进行实现:

1.1. 取得对方的WSDL地址信息;

1.2. 使用工具程序:fglwsdl

1.3 生成*.inc及*.4gl 以便导入程序进行调用程序实现

这种方式的调用,对方的接口新增或者调整,都需要使用fglwsdl工具去重新产生*.inc及*.4gl导入到程序去更新调用,不能实现动态的webservice调用,鉴于这点,我们接下来将介绍另一种TIPTOP GP调用其他系统的Webservice方法:

2、通过java开发作为桥梁(jar包)导入去实现TIPTOP调用其他系统的Webservice集成

记下来我们将重点介绍jar里面程序代码:

在这里插入图片描述

整体程序结构:
1、测试类:主要是测试我们的程序调用对方接口是否成功及正常返回的信息
2、服务类:这个也是我们重点的类,主要是撰写调用对方webservice的实现方法
3、组装发送给对方的XML报文模板类:
4、解析对方返回XML的解析方法类:

下面提供实现的具体代码:

package com.erp.service;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;

public class ErpService {
	
	

	/**
	 * 返回营运中心接口规格
	 * @param erpinterface 调用的接口名称
	 * @param body 报文信息
	 */
	
	public static String Interface(String erpinterface,String body) {

		// url是wsdl地址 
		String url="http://IP/ws/r/aws_ttsrv2?wsdl"; 
		StringBuilder sb = new StringBuilder("");
	
		sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tip=\"http://www.dsc.com.tw/tiptop/TIPTOPServiceGateWay\">");
		sb.append("<soapenv:Header/>");
		sb.append("<soapenv:Body>");
		sb.append("<tip:"+erpinterface+">");
		sb.append("<tip:request>");
		sb.append(body);
		sb.append("</tip:request>");
		sb.append("</tip:"+erpinterface+">");
		sb.append("</soapenv:Body>");
		sb.append("</soapenv:Envelope>");		
		sb.toString();	
		String result=HttpSendSoapPost(url,sb.toString());
		
		if (result == null) {
			result = "返回失败";
		}
		String resultbk = result.replaceAll("&lt;", "<").replaceAll("&gt;",">");
		return resultbk.toString();

	}
		
	public static String HttpSendSoapPost(String strurl,String xml){
		HttpURLConnection connection = null;
		InputStream is = null;
		BufferedReader br = null;
		String result = null;// 返回结果字符串
		OutputStream out = null;
		
		Date d1 = new Date();

		try {
		
			// 创建远程url连接对象
			URL url = new URL(strurl);
			// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
			
			connection = (HttpURLConnection) url.openConnection();
			// 设置连接方式:GET,POST
			connection.setRequestMethod("POST");

			connection.setDoInput(true);
			connection.setDoOutput(true);
			
			connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
			//这里必须要写,否则出错
			connection.setRequestProperty("SOAPAction", "");
			
						
			// 设置连接主机服务器的超时时间:15000毫秒
			connection.setConnectTimeout(15000);
			// 设置读取远程返回的数据时间:60000毫秒
			connection.setReadTimeout(60000);

			// 发送请求
			connection.connect();
			out = connection.getOutputStream(); // 获取输出流对象
			connection.getOutputStream().write(xml.getBytes("UTF-8")); // 将要提交服务器的SOAP请求字符流写入输出流
			out.flush();
			out.close();
			System.out.println(connection.getResponseCode());
			// 通过connection连接,获取输入流
			if (connection.getResponseCode() == 200) {
				is = connection.getInputStream();
				// 封装输入流is,并指定字符集
				br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
				// 存放数据
				StringBuffer sbf = new StringBuffer();
				String temp = null;
				while ((temp = br.readLine()) != null) {
					sbf.append(temp);
					sbf.append("\r\n");
				}
				result = sbf.toString();
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 关闭资源
			if (null != br) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (null != is) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			connection.disconnect();// 关闭远程连接
		}
		Date d2 = new Date();
		System.out.println(d2.getTime() - d1.getTime());
		System.out.println("****** END ********");		
		return result;
	}
	
	


}

TIPTOP 4GL 调用jar方法代码:



IMPORT os                                               
IMPORT com
IMPORT JAVA net.sf.json.JSON                            
IMPORT JAVA net.sf.json.JSONArray
IMPORT JAVA net.sf.json.JSONObject
IMPORT JAVA com.lifesense.common.HttpUtils  
IMPORT util
IMPORT xml
IMPORT JAVA com.erp.service.SetEcxml
IMPORT JAVA com.erp.service.BpmService
#IMPORT JAVA com.erp.service.ReadBpmxml
DATABASE ds

MAIN
DEFINE x STRING;
DEFINE y STRING;
DEFINE z STRING;
DEFINE a STRING;
DEFINE jkmc STRING;
DEFINE ecres STRING;
DEFINE ecrepose STRING;
DEFINE ecread STRING;
DEFINE cont INTEGER
DEFINE node  om.DomNode
DEFINE nodexml om.DomDocument
DEFINE nl_record  om.NodeList

#LET x = '01000146%dkf%20224534%25%001'
#LET EC = SetXml.Set_ima01_xml(x);
LET jkmc = 'getEcnStausSimple'

LET x ='01006076'
LET y ='0300002'
LET z ='0300069'
LET a ='A001'

LET ecres = SetEcxml.Set_bpmec_xml(x,y,z,a);  //组装XML报文格式
LET ecrepose = ErpService.Interface(jkmc,ecres); //先jar包里面的方法传入webservice注册接口名称及XML报文内容,并接收接口返回的结果

DISPLAY ecrepose;
END MAIN
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值