0

我正在做一个小代码来获取它是否可以连接到数据库。我有几个这样的代码工作,但我不知道为什么我不知道为什么这不起作用。

例外情况如下:

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;
}

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

4

1 回答 1

1

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

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

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

于 2013-10-24T10:30:30.647 回答