Dom Parser в Android 4.0 API

1

Моя проблема заключается в том, что Dom Parser не работает в Android 4.0, но работает над версией 2.2, если я запускаю проект в своем эмуляторе 4.0, чем нижняя строка не выполняется, и это не дает никаких ошибок.

Document doc = db.parse(inStream);

Ниже приведен код Java:

public class TestParsingActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        StringBuffer sb = new StringBuffer();

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

        System.setProperty("http.proxySet", "true");
        System.setProperty("http.proxyHost", "192.168.1.220");
        System.setProperty("http.proxyPort", "315");

        String NAMESPACE = "Dipak";
        String SOAP_ACTION = "Dipak/Start";
        String METHOD_NAME = "Start";
        String url = "http://google.co.uk/Dip/service1.asmx";

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        PropertyInfo p = new PropertyInfo();
        String qry = "select Password from Profiles where ID = (select uid from userprofiles where name = 'Dipak')";

        p.setName("SQL");
        p.setValue(qry);
        request.addProperty(p);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(url);
        httpTransport.debug = true;

        System.out.println("three**************");

        try {
            httpTransport.call(SOAP_ACTION, envelope);
            System.out.println("four**************");
            // SoapObject response=(SoapObject)envelope.bodyIn;
            SoapObject response = (SoapObject) envelope.getResponse();

            System.out.println("response =====>>>> "
                    + response.getProperty(0).toString());
            // SoapObject response=(SoapObject)envelope.getResponse();
            // SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            System.out.println("success**************");

            sb.append(response);
            System.out.println("Data from Search Job =====>>>> "
                    + sb.toString());
            // return response.toString();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();

            DocumentBuilder db = factory.newDocumentBuilder();
            InputSource inStream = new InputSource();

            System.out.println("Data from try  =====>>>> " + sb.toString());

            inStream.setCharacterStream(new StringReader(sb.toString()));

            System.out
                    .println("Data from try  =====>>>>11111111111111111111111111111 ");

            Document doc = db.parse(inStream);
            System.out
                    .println("Data from try  =====>>>>22222222222222222222222222222 ");

            Element root = doc.getDocumentElement();

            String root1 = doc.getTextContent();
            System.out
                    .println("Value of root................................................................................"
                            + root);
            System.out
                    .println("Value of root1................................................................................"
                            + root1);
            System.out
                    .println("................................................................................5");
        } catch (Exception e) {
            // TODO: handle exception
        }

    }
}

Любая помощь была бы оценена, извините за мое плохое английское общение.

Теги:
ksoap2
domparser

1 ответ

0
Лучший ответ

Почему бы вам не использовать

response.getPropertyAsString(index);

или

response.getPropertyAsString("PROPERTY_NAME");

?

Но вы все равно хотите использовать парсер Dom, вы можете использовать HttpTransportSE.responseDump чтобы получить ответ в формате XML и попробовать разбор XML вместо формата ответа ksaop2.

  • 0
    пожалуйста, дайте некоторое объяснение или, если у вас есть пример ссылки, пожалуйста, дайте мне.
  • 0
    Спасибо JPriest, моя проблема - решить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню