クライアント プロジェクトと Web サービス プロジェクトで定義された、シリアライズ可能を実装するカスタム オブジェクトがあります。そのオブジェクトを SOAP メッセージを介してバイト配列として渡したいのですが、これを実行しようとすると、オブジェクトを再構築する Web サービスのメソッドに、次のスタックのようにクラスが見つからないという例外があります。
java.lang.ClassNotFoundException: com.myproject.biosign.client.vo.Istante
例外で参照されるパスは、クライアント内のオブジェクトのパスであり、当然のことながら Web サービスでは見つからないことに注意してください。Web サービスで同じオブジェクトの定義を使用してオブジェクトを再構築するにはどうすればよいですか?
オブジェクトの変換、送信、および逆変換のコードに従います。
クライアントメソッド:
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();