Сначала используйте "soapUI", чтобы увидеть правильную структуру запроса (например, имена элементов, пространства имен элементов, ...).
Мы предполагаем, что вы хотите написать как XML в запросе: (здесь n0 и n1 - пространства имен)
<n0:strarray xmlns:n0="http://n0 ..." xmlns:n1="http://n1 ...">
<n1:string>hello</n1:string>
<n1:string>world</n1:string>
</n0:strarray>
расширить класс из вектора:
import java.util.Hashtable;
import java.util.Vector;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;
public class StringArraySerializer extends Vector<String> implements KvmSerializable {
//n1 stores item namespaces:
String n1 = "http://n1 ...";
@Override
public Object getProperty(int arg0) {
return this.get(arg0);
}
@Override
public int getPropertyCount() {
return this.size();
}
@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
arg2.setName = "string";
arg2.type = PropertyInfo.STRING_CLASS;
arg2.setNamespace = n1;
}
@Override
public void setProperty(int arg0, Object arg1) {
this.add(arg1.toString());
}
}
Чтобы построить запрос, вы должны сделать это:
1 - создать новый векторный объект из этого класса:
StringArraySerializer stringArray = new StringArraySerializer();
2 - тогда вы можете добавить элементы:
stringArray.add("hello");
stringArray.add("world");
3 - затем вы создаете PropertyInfo с ним:
//n0 stores array namespace:
String n0 = "http://n0 ...";
stringArrayProperty = new PropertyInfo();
stringArrayProperty.setName("strarray");
stringArrayProperty.setValue(stringArray);
stringArrayProperty.setType(stringArray.getClass());
stringArrayProperty.setNamespace(n0);
4 - затем вы добавляете все свойства в запрос:
Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty(stringArrayProperty);
Справка:
ksoap2-андроид, CodingTipsAndTricks