Скорее всего, вы получили ответ не-SOAP.
Чтобы получить и проверить ваш запрос / ответ SOAP, установите aht.debug = true;
, а затем после того, как вы позвоните aht.cal(...)
, выведите значения aht.requestDump
и aht.responseDump
для вывода (например, внешний файл или LogCat). *
Например:
//...
aht.debug = true;
aht.call(SOAP_ACTION, envelope);
Log.e("SOAP_REQUEST", "----------------------------");
Log.e("SOAP_REQUEST", XmlUtils.format(aht.requestDump));
Log.e("SOAP_REQUEST", "----------------------------");
Log.e("SOAP_RESPONSE", "----------------------------");
Log.e("SOAP_RESPONSE", XmlUtils.format(aht.responseDump));
Log.e("SOAP_RESPONSE", "----------------------------");
Где XmlUtils
класс имеет следующий код:
public class XmlUtils
{
static public String format(String unformattedXml)
{
StringWriter writer = new StringWriter();
try
{
Document doc = parseXml(unformattedXml);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(new DOMSource(doc), new StreamResult(writer));
writer.close();
}
catch(Exception ex)
{
return unformattedXml;
}
return writer.toString();
}
private static Document parseXml(String xml) throws IOException, ParserConfigurationException, SAXException
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
return db.parse(is);
}
}