这是一种”万能“的方式。我的意思是任何开发平台,任何语言,任何软件系统都能参考这一方法来访问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";
}
}
这篇文章的代码就不传了,主要的两个核心操作都列出了~