WebService大講堂之Axis2(2):複合型別資料的傳遞
阿新 • • 發佈:2019-02-08
package client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class ComplexTypeRPCClient
{
public static void main(String[] args) throws Exception
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/ComplexTypeService");
options.setTo(targetEPR);
// 下面的程式碼呼叫uploadImageWithByte方法上傳影象檔案 /////////////////////////////////////////
// 開啟影象檔案,確定影象檔案的大小 java.io.File file = new java.io.File("f:\\images.jpg");
java.io.FileInputStream fis = new java.io.FileInputStream("f:\\images.jpg");
// 建立儲存要上傳的影象檔案內容的位元組陣列 byte[] buffer = new byte[(int) file.length()];
// 將影象檔案的內容讀取buffer陣列中 int n = fis.read(buffer);
System.out.println("檔案長度:" + file.length());
Object[] opAddEntryArgs = new Object[]{ buffer, n };
Class[] classes = new Class[]{ Boolean.class };
QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadImageWithByte");
fis.close();
// 開始上傳影象檔案,並輸出uploadImageWithByte方法的返回傳 System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);
/////////////////////////////////////////
// 下面的程式碼呼叫了getArray方法,並返回一維String陣列 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getArray");
String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry,
new Object[]{}, new Class[]{String[].class })[0];
for (String s : strArray)
System.out.print(s + " ");
System.out.println();
/////////////////////////////////////////
// 下面的程式碼呼叫了getMDArray方法,並返回一維String陣列 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getMDArray");
strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{},
new Class[]{String[].class})[0];
for (String s : strArray)
{
String[] array = s.split(",");
for(String ss: array)
System.out.print("<" + ss + "> ");
System.out.println();
}
System.out.println();
/////////////////////////////////////////
// 下面的程式碼呼叫了getDataForm方法,並返回DataForm物件例項 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getDataForm");
data.DataForm df = (data.DataForm) serviceClient.invokeBlocking(opAddEntry, new Object[]{},
new Class[]{data.DataForm.class})[0];
System.out.println(df.getAge());
/////////////////////////////////////////
// 下面的程式碼呼叫了getDataFormBytes方法,並返回位元組陣列,最後將返回的位元組陣列反序列化後,轉換成DataForm物件例項 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getDataFormBytes");
buffer = (byte[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{}, new Class[]{byte[].class})[0];
java.io.ObjectInputStream ois = new java.io.ObjectInputStream(
new java.io.ByteArrayInputStream(buffer));
df = (data.DataForm) ois.readObject();
System.out.println(df.getName());
//////////////////////////////////////////
}
}
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class ComplexTypeRPCClient
{
public static void main(String[] args) throws Exception
{
RPCServiceClient serviceClient = new
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/ComplexTypeService");
options.setTo(targetEPR);
// 下面的程式碼呼叫uploadImageWithByte方法上傳影象檔案 /////////////////////////////////////////
java.io.FileInputStream fis = new java.io.FileInputStream("f:\\images.jpg");
// 建立儲存要上傳的影象檔案內容的位元組陣列 byte[] buffer = new byte[(int) file.length()];
// 將影象檔案的內容讀取buffer陣列中 int n = fis.read(buffer);
System.out.println("檔案長度:" + file.length());
Object[] opAddEntryArgs = new
Class[] classes = new Class[]{ Boolean.class };
QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadImageWithByte");
fis.close();
// 開始上傳影象檔案,並輸出uploadImageWithByte方法的返回傳 System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);
/////////////////////////////////////////
// 下面的程式碼呼叫了getArray方法,並返回一維String陣列 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getArray");
String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry,
new Object[]{}, new Class[]{String[].class })[0];
for (String s : strArray)
System.out.print(s + " ");
System.out.println();
/////////////////////////////////////////
// 下面的程式碼呼叫了getMDArray方法,並返回一維String陣列 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getMDArray");
strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{},
new Class[]{String[].class})[0];
for (String s : strArray)
{
String[] array = s.split(",");
for(String ss: array)
System.out.print("<" + ss + "> ");
System.out.println();
}
System.out.println();
/////////////////////////////////////////
// 下面的程式碼呼叫了getDataForm方法,並返回DataForm物件例項 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getDataForm");
data.DataForm df = (data.DataForm) serviceClient.invokeBlocking(opAddEntry, new Object[]{},
new Class[]{data.DataForm.class})[0];
System.out.println(df.getAge());
/////////////////////////////////////////
// 下面的程式碼呼叫了getDataFormBytes方法,並返回位元組陣列,最後將返回的位元組陣列反序列化後,轉換成DataForm物件例項 ///////////////////////////////////////// opAddEntry = new QName("http://ws.apache.org/axis2", "getDataFormBytes");
buffer = (byte[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{}, new Class[]{byte[].class})[0];
java.io.ObjectInputStream ois = new java.io.ObjectInputStream(
new java.io.ByteArrayInputStream(buffer));
df = (data.DataForm) ois.readObject();
System.out.println(df.getName());
//////////////////////////////////////////
}
}