我在 Android 中有一个使用 ksoap2
的网络客户端,但我无法将字符串数组作为参数传递给网络服务。
这是我的代码
String[] items={"hello","world"};
request.addproperty("str",items);
最佳答案
首先使用“soapUI”查看正确的请求结构(如项目名称、项目 namespace ……)。 我们假设你想在请求中这样写 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);
引用:
关于android - 如何使用 ksoap2 将字符串数组传递给 webservice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130862/