use*_*575 4 android web-services android-ksoap2
我在Android中使用Web客户端,ksoap2但我不能将字符串数组作为参数传递给webservice.
这是我的代码
String[] items={"hello","world"};
request.addproperty("str",items);
Run Code Online (Sandbox Code Playgroud)
has*_*ian 12
首先使用"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>
Run Code Online (Sandbox Code Playgroud)
从vector扩展一个类:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
要构建请求,您必须执行此操作:
1 - 从这个类中创建一个新的Vector-Object:
StringArraySerializer stringArray = new StringArraySerializer();
Run Code Online (Sandbox Code Playgroud)
2 - 然后你可以添加元素:
stringArray.add("hello");
stringArray.add("world");
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
4 - 然后将所有属性添加到请求中:
Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty(stringArrayProperty);
Run Code Online (Sandbox Code Playgroud)
参考:
ksoap2-机器人,CodingTipsAndTricks
| 归档时间: |
|
| 查看次数: |
11451 次 |
| 最近记录: |