2015-04-17 3 views
1

я пытаюсь создать запрос на мыло, я узнаю от https://stackoverflow.com/a/15949858/4799735 из Thats урока, я запутаться, как создать XML, как этотJava SE мыло настроить

<GetUserInfo> 
    <ArgComKey Xsi:type="xsd:integer"> ComKey </ ArgComKey> 
<Arg> 
    <PIN Xsi:type="xsd:integer"> Job Number </ PIN> 
</ Arg> 
</ GetUserInfo> 

мой Workcode являются

SOAPBody soapBody = envelope.getBody(); 
    SOAPElement soapBodyElem = soapBody.addChildElement("GetUserInfo"); 
    SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("type", "ArgComKey","xsd"); 
    SOAPBodyElement element = soapBody.addBodyElement(envelope.createName("type", "ArgComKey", "=xsd:integer")); 
    soapBodyElem1.addTextNode("ComKey"); 
    SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("Arg"); 
    soapBodyElem2.addTextNode("123"); 

    MimeHeaders headers = soapMessage.getMimeHeaders(); 
    headers.addHeader("SOAPAction", serverURI + "VerifyEmail"); 

это вернуть

<GetUserInfo> 
<ArgComKey:type xmlns:ArgComKey="xsd">ComKey</ArgComKey:type> 
<Arg>123</Arg> 
</GetUserInfo><ArgComKey:type xmlns:ArgComKey="=xsd:integer"/> 

мой вопрос белый у меня есть, чтобы написать так, что мой результат код

<ArgComKey Xsi:type="xsd:integer"> ComKey </ ArgComKey> 

ответ

1

Вы можете попробовать с этим:

SOAPBody soapBody = envelope.getBody(); 
SOAPElement soapBodyElem = soapBody.addChildElement("GetUserInfo"); 
SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("ArgComKey", "", "xsd:integer"); 
soapBodyElem1.addTextNode("ComKey"); 
SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("Arg"); 
soapBodyElem2.addTextNode("123"); 

Это приведет с:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header /> 
    <SOAP-ENV:Body> 
     <GetUserInfo> 
      <ArgComKey xmlns="xsd:integer">ComKey</ArgComKey> 
      <Arg>123</Arg> 
     </GetUserInfo> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Если вы хотите использовать XSI пространство имен вы должны попробовать с помощью этого кода:

SOAPEnvelope envelope = soapPart.getEnvelope(); 
envelope.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance"); 
SOAPBody soapBody = envelope.getBody(); 
SOAPElement soapBodyElem = soapBody.addChildElement("GetUserInfo"); 
SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("ArgComKey"); 
soapBodyElem1.addTextNode("ComKey").setAttribute("xsi:type","xsd:integer"); 
SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("Arg"); 
soapBodyElem2.addTextNode("123"); 

Благодаря этому вы получите:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <SOAP-ENV:Header /> 
    <SOAP-ENV:Body> 
     <GetUserInfo> 
      <ArgComKey xsi:type="xsd:integer">ComKey</ArgComKey> 
      <Arg>123</Arg> 
     </GetUserInfo> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
+0

спасибо за aswer но я должен изменить ComKey к ComKey

+0

Я отредактировал свой ответ. –

+0

благодарит меня за помощь, это работает –