Как передать многократное изображение bytearray в .net soap webservice - PullRequest
0 голосов
/ 16 октября 2018

enter image description here

Я пытаюсь отправить изображение байтового массива в ArrayList с ошибкой подачи, поскольку сериализация невозможна.пожалуйста, помогите мне закодировать это.

1 Ответ

0 голосов
/ 29 января 2019

Предполагая, что вы KvmSerilizer, вы можете определить свойство следующим образом, чтобы создать массив:

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

Но я думаю, что вам нужен вектор вместо 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);
    }
}
...