我正在做一个很小的代码,如果它可以连接或不连接到数据库。我有几个像这样的代码工作,但我不知道为什么我不知道为什么这不起作用。
例外情况如下:
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;
}
我也总是收到“未完成”的消息。感谢。
答案 0 :(得分:1)
SOAP使用XML作为它的消息。因此,当在Android中收到响应时,SoapSerializationEnvelope对象会尝试解析它,期望它是XML。我不完全确定您的Web服务返回什么,但它必须采用正确的XML格式,而且目前还不是。
由于此异常(每次都会发生),您总是会得到“未完成”的结果。
要解决此问题,请确保您的PHP服务以正确的XML格式响应,或者不使用SOAP来调用该服务。