java .lang.IllegalArgumentException: локальная часть не может быть "нулевой" при создании QName - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь добавить следующее xml к моему soap телу после преобразования его в документ

<ns2:OSSRequest xmlns:ns2="http://www.someurl">
<requestBody>
    <property>
        <address>
            <addressId>someValue</addressId>
            <municipality>someValue</municipality>
            <postalCode>someValue</postalCode>
            <province>someValue</province>
            <streetNumber>someValue</streetNumber>
        </address>
    </property>
    <requestedProducts>
        <products>someValue</products>
        <products>someValue</products>
    </requestedProducts>
</requestBody>
<requestHeader/>

, но я получаю ошибку

java.lang.IllegalArgumentException: local part cannot be "null" when creating a QName

вот код, который я использую для преобразования xml в soap body

MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPHeader header_soap = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
Document document = convertStringToDocument(xml);
body.addDocument(document); // getting error on this line

Ниже приведен код, который преобразует xml в документ

private Document convertStringToDocument(String xmlStr) {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    try {
        builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
        return doc;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

Является ли мой xml недействительным? Или мне не хватает каких-либо настроек при добавлении в документ?

1 Ответ

0 голосов
/ 19 марта 2020

Посмотрите на этот пост. Похоже, вам нужно добавить в заголовок элемент с указанием QName и localPart.

SOAP вызов не выполняется при развертывании в websphere, но отлично работает на tomcat

...