Java 通过XML和SOAP访问Aras Innovator

这是一种”万能“的方式。我的意思是任何开发平台,任何语言,任何软件系统都能参考这一方法来访问Aras Innovator PLM。

其原理和简单,使用HTTP协议来发送基于SOAP格式的请求数据,服务器返回SOAP格式数据,解析SOAP数据(当然,实际是解析XML)

在11年的时候,写个一个Java版的IOM,其核心就是发送 SOAP请求,其他都是封装 AML和解析XML~

准备工作:

1)服务器信息: 用户名,密码,服务器地址,数据库ID

2)技术方面主要是java的几个http相关的类和IO操作

分两步:

1,登录服务器   2,向服务器发起SOAP请求

直接上代码吧:

1)登录服务器的方法:

public static boolean login(String UserName,String Password,String ServerURL,String DBName) throws IOException
    {
        StringBuffer sb=new StringBuffer();
        URL urlconn=new URL(ServerURL);
        HttpURLConnection httpconn=(HttpURLConnection)urlconn.openConnection();
        httpconn.setConnectTimeout(3000);
        httpconn.setRequestProperty("Content-Type", "text/xml; charset=utf-8;");
        httpconn.setDoInput(true);
        httpconn.setDoOutput(true);
       
        if(ServerURL!=null)
        {
            ServerURL=ServerURL.toLowerCase();
            if(!ServerURL.contains("/server/"))
            {
                if(ServerURL.lastIndexOf("/")==(ServerURL.length()-1))
                {
                    ServerURL=ServerURL+"innovatorserver.aspx";
                }
                else
                {
                    ServerURL=ServerURL+"/innovatorserver.aspx";
                }
            }
        }
        Password=MD5calc(Password);
       
        httpconn.setRequestProperty("SOAPAction", "ValidateUser");
        httpconn.setRequestProperty("AUTHUSER", UserName);
        httpconn.setRequestProperty("AUTHPASSWORD", Password);
        httpconn.setRequestProperty("DATABASE", DBName);
        String amlstring="<?xml version='1.0' encoding='utf-8'?><Item/>";
        //amlstring=URLEncoder.encode(amlstring,"utf-8");
        OutputStream  outSWrite= httpconn.getOutputStream();
        outSWrite.write((amlstring).getBytes());
       
        outSWrite.flush();
        outSWrite.close();
        InputStreamReader inSRead=new InputStreamReader(httpconn.getInputStream());
       
        if(inSRead.ready())
        {
            while(true)
            {
                byte temp=(byte)inSRead.read();
                if(temp==(-1))
                {
                    break;
                }
                char tempChar=(char)temp;
                sb.append(tempChar);
            }
        }
   
        if(sb.toString().contains("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"
http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Body><Result>"))
        {
            System.out.print("登录成功 ");
            inSRead.close();
            return true;
        }
        else
        {
            System.out.print("登录失败 ");
            inSRead.close();
            return false;
        }
       
    }

2)发送SOAP请求的方法

public static String ApplyAML(String UserName, String Password, String ServerURL,
                String DBName,String AMLString,String soapAction) {
            try {
                StringBuffer sb = new StringBuffer();
                URL urlconn = new URL(ServerURL);
                HttpURLConnection httpconn = (HttpURLConnection) urlconn
                        .openConnection();
                httpconn.setRequestMethod("POST");
                httpconn.setRequestProperty("Content-Type",
                        "text/xml; charset=utf-8;");
                httpconn.setDoInput(true);
                httpconn.setDoOutput(true);
                Password = ConnAras.MD5calc(Password);
                if(soapAction!=null)
                {//ApplyItem
                httpconn.setRequestProperty("SOAPAction", soapAction);
                }
                else
                {
                    httpconn.setRequestProperty("SOAPAction", "");
                }
                httpconn.setRequestProperty("AUTHUSER", UserName);
                httpconn.setRequestProperty("AUTHPASSWORD", Password);
                httpconn.setRequestProperty("DATABASE", DBName);
                // String amlstring="<?xml version='1.0' encoding='utf-8'?><Item/>";
                // amlstring=URLEncoder.encode(amlstring,"utf-8");
                OutputStream outSWrite = httpconn.getOutputStream();
                outSWrite.write((AMLString).getBytes());
                outSWrite.flush();
                outSWrite.close();
               
                InputStream inSRead = httpconn.getInputStream();
                BufferedReader br=new BufferedReader(new InputStreamReader(inSRead));
                while(true)
                {
                    String data=br.readLine();
                    if(data==null)
                    {
                        break;
                    }
                    sb.append(data);
                   
                }
                return sb.toString();
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
                return "AMLStringERR";
            }

        }

 

这篇文章的代码就不传了,主要的两个核心操作都列出了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值