2013-10-24 2 views
0

Я делаю крошечный код, чтобы получить, может ли он подключиться или нет в базе данных. У меня есть несколько таких кодов, как эта работа, но я не знаю, почему я не могу понять, почему это не работает.Android XmlPullParserException

Исключением является следующее:

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 [email protected]) 

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 веб-сервиса) только следующее:

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

SOAP использует XML для своих сообщений. Поэтому, когда ответ получен в Android, объект SoapSerializationEnvelope пытается его проанализировать, ожидая, что это XML. Я не совсем уверен, что возвращает ваш веб-сервис, но он должен быть в правильном формате XML, и это не сейчас.

Из-за этого исключения (которое происходит каждый раз), вы всегда получаете результат «не сделано».

Чтобы решить эту проблему, убедитесь, что ваш PHP-сервис отвечает в правильном формате XML или не использует SOAP для вызова службы.

+0

Вы мне не очень помогаете. У меня есть 10 функций, которые правильно извлекают значения из службы PHP, я просто не могу понять, почему этот не работает. – user2902515

+0

Ну, я точно описываю, что случилось. Можете ли вы опубликовать полный стек, чтобы мы могли увидеть, где это не так? Кроме того, вы можете продемонстрировать реализацию других функций, которые работают правильно? Может быть, мы можем заметить разницу. –

Смежные вопросы