FAQ
I am invoking java soap webservices from my android application using kvm
serialization. my pojo classes and code is given below,

DataSet.java

public class DataSet implements KvmSerializable{

public String client = null;
public Photo[] images;
public String userId = null;

@Override
public Object getProperty(int arg0) {
switch (arg0){
case 0:
return client;
case 1:
return images;
case 2:
return userId;
default:
return null;
}
}

@Override
public int getPropertyCount() {
// TODO Auto-generated method stub
return 3;
}

@Override
public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo
info) {
switch(index)
{
case 0:
info.type = PropertyInfo.STRING_CLASS;
info.name = "client";
break;
case 1:
info.type = Photo.class;
info.name = "images";
case 2:
info.type = PropertyInfo.STRING_CLASS;
info.name = "userId";
default:
break;
}

}

@Override
public void setProperty(int index, Object value) {
switch(index)
{
case 0:
client = value.toString();
break;
case 1:
images = (Photo[]) value;
break;
case 2:
userId = value.toString();
break;
default:
break;
}

}

}

and Photo.java

public class Photo implements KvmSerializable{

public byte[] data;
public String name;

@Override
public Object getProperty(int arg0) {
switch (arg0){
case 0:
return data;
case 1:
return name;
default:
return null;
}
}

@Override
public int getPropertyCount() {
// TODO Auto-generated method stub
return 2;
}

@Override
public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo
info) {
switch(index)
{
case 0:
info.type = new byte [0].getClass();
info.name = "data";
break;
case 1:
info.type = PropertyInfo.STRING_CLASS;
info.name = "name";
default:
break;
}

}

@Override
public void setProperty(int index, Object value) {
switch(index)
{
case 0:
data = (byte[])value;
break;
case 1:
name = value.toString();
break;
default:
break;
}

}

In this I stored the images and name into the Photo.java POJO and then set
into the DataSet POJO as,

public class Sample implements Runnable {
...
...
Photo[] photoArr = new Photo[3];
int count = 0;

public void run() {
while (count < 3) {
....
....
....
byte[] byteArray = stream.toByteArray();
Photo photo = new Photo();
photo.data = byteArray;
photo.name = "img"+count;
photoArr[count] = photo;
count++;
}
if(count == 2)
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
new MarshalBase64().register(envelope); //serialization
envelope.encodingStyle = SoapEnvelope.ENC;


PropertyInfo pi = new PropertyInfo();
DataSet dataSet = new DataSet();
dataSet.client = "1";
dataSet.userId = "1";
dataSet.images = photoArr;

pi.setName("dataSet");
pi.setValue(dataSet);
pi.setType(dataSet.getClass());
request.addProperty(pi);

envelope.setOutputSoapObject(request);
envelope.addMapping(NAMESPACE, "dataSet", DataSet.class);
envelope.addMapping(NAMESPACE, "images", Photo.class);

AndroidHttpTransport httpTransport = new
AndroidHttpTransport(URL);
httpTransport.debug = true;
httpTransport.call(SOAP_ACTION, envelope);

SoapObject result = (SoapObject) envelope.bodyIn;
Log.d("Result: ", result.toString());
}
}

But I am getting the following error **Cannot serialize:
[Lcom.common.Photo;@41221270**.

What is wrong im my code. I have searched about this issue. But I did't get
correct answer.
Can anyone help me to fix this?

--

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupandroid-opencv @
categoriesandroid
postedAug 28, '12 at 9:09a
activeAug 28, '12 at 9:09a
posts1
users1
websiteandroid.com

1 user in discussion

Karthik: 1 post

People

Translate

site design / logo © 2018 Grokbase