将xml作为消息发送到xml中

时间:2012-08-24 08:46:54

标签: android xml web-services ksoap2

我需要从我的应用程序向Web服务发送3件事:用户名+密码和包含更多XML的消息。

request.addProperty("username", username);
request.addProperty("password", password);
request.addProperty("message", UitVoer); // uitvoer is a String that contains XML

我使用kso​​ap2 librabry,它总是适用于android< - >网络服务,但atm我不确定它是否仍然适用于我需要的东西。

当我检查envelope.bodyOut时,所有标签和< >迹象看起来应该是。 但随后我收到了来自Web服务的错误消息,其中包含我发送的XML,并显示了这些符号的HTML代码。

ksoap2是否会替换标志,是否应该使用其他方式将我的内容发送到Web服务,或者Web服务端是否有问题? (我无法控制Web服务,所以我不知道它在那方面做了什么。)

1 个答案:

答案 0 :(得分:2)

这是构建xml请求的方法;希望这会有所帮助:)

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();  
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();  
Document document = documentBuilder.newDocument();  
Element rootElement = document.createElement("map");  
document.appendChild(rootElement);  

Element em = document.createElement("string");  
em.setAttribute("name", "FirstName");  
em.appendChild(document.createTextNode("Rita"));  
rootElement.appendChild(em);  

em = document.createElement("string");  
em.setAttribute("name", "LastName");  
em.appendChild(document.createTextNode("Roy"));  
rootElement.appendChild(em);  


TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer();
            Properties outFormat = new Properties();
            outFormat.setProperty(OutputKeys.INDENT, "yes");
            outFormat.setProperty(OutputKeys.METHOD, "xml");
            outFormat.setProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
            outFormat.setProperty(OutputKeys.VERSION, "1.0");
            outFormat.setProperty(OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperties(outFormat);
            DOMSource domSource = new DOMSource(document.getDocumentElement());
            OutputStream output = new ByteArrayOutputStream();
            StreamResult result = new StreamResult(output);
            transformer.transform(domSource, result);
            strXMLInput = output.toString();