Android XmlPullParserException

时间:2013-10-24 10:19:16

标签: android

我正在做一个很小的代码,如果它可以连接或不连接到数据库。我有几个像这样的代码工作,但我不知道为什么我不知道为什么这不起作用。

例外情况如下:

10-24 06:09:08.362: E/Exception:(1753): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG (empty) <br>@1:7 in java.io.InputStreamReader@4176d928) 

Java代码:

private final String NAMESPACE = "http://10.0.0.47/fullexample/server.php/";
private final String URL = "http://10.0.0.47/fullexample/server.php";
/*
....
*/
private class get_connectivity extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... params) {
        try{
            SoapObject request = new SoapObject(NAMESPACE, "can_connect");  

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

            androidHttpTransport.call(URL + "/can_connect", envelope);
            return "done";
        }catch (Exception e){
            Log.e("Exception:", e.toString());
        }
        return "not done";
    }

    @Override
    protected void onPostExecute(String result) {
        // got_connection = it's a global string variable
        got_connection = result;
    }
}

函数can_connect(在PHP webservice中)就是以下内容:

function can_connect(){ 
    $host = "localhost";
    $user = "root";
    $database = "fullexampleDB";
    $pwd = "";

    $db = new mysqli($host, $user, $pwd, $database);
    if ($db->connect_errno) {
        return false;
        exit();
    }   
    $db->close();
    return true;
}

我也总是收到“未完成”的消息。感谢。

1 个答案:

答案 0 :(得分:1)

SOAP使用XML作为它的消息。因此,当在Android中收到响应时,SoapSerializationEnvelope对象会尝试解析它,期望它是XML。我不完全确定您的Web服务返回什么,但它必须采用正确的XML格式,而且目前还不是。

由于此异常(每次都会发生),您总是会得到“未完成”的结果。

要解决此问题,请确保您的PHP服务以正确的XML格式响应,或者不使用SOAP来调用该服务。