【问题标题】:How to pass mutiple bytearray image in .net soap webservice如何在.net soap web服务中传递多字节数组图像
【发布时间】:2019-03-20 15:05:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    假设你是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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多