android - 如何使用 ksoap2 将字符串数组传递给 webservice?

标签 android web-services android-ksoap2

我在 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);

引用:

ksoap2-android,CodingTipsAndTricks

关于android - 如何使用 ksoap2 将字符串数组传递给 webservice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130862/

相关文章:

java - 当前位置的android google maps问题

java - 从数组中的特定字段填充

android - 理想的标记尺寸

java - Java 中不包含的 Realm

android - KSOAP 为节点添加自定义类型

Android-Magento- 如何使用 ksop2 将产品添加到购物车

java - 使用 KSOAP2 序列化要发送的整数数组

ASP.NET Web 服务(复数)或具有多个类的 Web 服务

java - 带有 axis2 的双向 ssl 导致读取超时

java - Web 服务 SOAP 请求的默认超时?