如何在.net soap Webservice中传递多个字节数组图像

时间:2018-10-16 06:46:38

标签: android .net soap-client ksoap2 android-ksoap2

enter image description here

我正在尝试在ArrayList中发送字节数组图像,因为无法序列化,因此出现错误。请帮我编写代码。

1 个答案:

答案 0 :(得分:0)

假设您KvmSerilizer,可以像这样定义属性以创建数组:

info.setName("ProjectImage");
info.setType(PropertyInfo.VECTOR_CLASS);
elementType.setType(PropertyInfo.STRING_CLASS);
elementType.setName("base64Binary");
elementType.setNamespace(Constants.NAMESPACE);
info.setElementType(elementType);

但是我认为您需要vector而不是ArrayList,否则serelizer将无法工作。

您的属性应为private Vector<byte[]>

此外,您需要一个封送处理程序,将您的byte[]转换为base64字符串:

public class MarshalBase64 implements Marshal {

    @Override
    public Object readInstance(XmlPullParser parser, String namespace, String name, PropertyInfo expected) throws IOException, XmlPullParserException {
        String str = parser.nextText();

        byte[] decoded = Base64.decode(str, Base64.DEFAULT);
        return  decoded;
    }

    @Override
    public void writeInstance(XmlSerializer writer, Object instance) throws IOException {
        byte[] data = (byte[]) instance;
        String encoded = Base64.encodeToString(data, Base64.NO_WRAP);
        writer.text(encoded);
    }

    @Override
    public void register(SoapSerializationEnvelope envelope) {
        envelope.addMapping("http://www.w3.org/2001/XMLSchema", "base64Binary", byte[].class, this);
    }
}