我有一个自定义对象,它实现了可序列化,在客户端项目和webservice项目中定义。我想通过soap消息将该对象作为字节数组传递,但是当我尝试这样做时,重建对象的webservice中的方法有一个类未找到异常,如下面的堆栈中所示:
java.lang.ClassNotFoundException: com.myproject.biosign.client.vo.Istante
请注意,exception中引用的路径是客户端中对象的路径,正确地说是在webservice中找不到的路径。如何使用webservice中相同对象的定义重建对象?
遵循转换,发送和取消转换对象的代码。
在客户端方法中:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
out = new ObjectOutputStream(bos);
out.writeObject(istanti.get(0));
byte[] yourBytes = bos.toByteArray();
out.close();
bos.close();
request.addProperty("lista", yourBytes);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
Marshal floatMarshal = new MarshalFloat();
floatMarshal.register(envelope);
new MarshalBase64().register(envelope);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION, envelope);
在WS方法中:
ByteArrayInputStream bis = new ByteArrayInputStream(lista);
ObjectInput in = null;
try {
in = new ObjectInputStream(bis);
Object o = in.readObject();
Istante ist = (Istante) o;
System.out.println("eccoci" + ist.getXCoord());
bis.close();
in.close();
答案 0 :(得分:0)
为了按照您的方式使用Java的序列化,您需要在客户端和服务器的类路径中拥有客户端类Istante
。
可以将Istante
的字节代码发送到服务器,然后使用自定义类加载器来解析该类。但我强烈建议你不要这样做。一个不错的简单JSON交换格式将是更好的选择。
我应该指出最简单的解决方案是在服务器类路径中包含带Istante
的jar。