DEBUG/SntpClient(71): время запроса не удалось: java.net.SocketException

Я пытался разработать подключение базы данных MySQL через Ksoap2 в Android-приложении.

http://codeoncloud.blogspot.in/2012/03/android-mysql-client.html

Я постоянно получаю "02-28 06:16:40.267: DEBUG/SntpClient(66): сбой времени запроса: java.net.SocketException: семейство адресов, не поддерживаемое протоколом" в моем приложении.

Дис моя кодировка Android:

 package com.retailer.client;

 import android.app.Activity;
 import android.os.Bundle;
 import org.ksoap2.SoapEnvelope;
 import org.ksoap2.serialization.SoapObject;
 import org.ksoap2.serialization.SoapPrimitive;
 import org.ksoap2.serialization.SoapSerializationEnvelope ;
 import org.ksoap2.transport.HttpTransportSE;
 import android.widget.TextView;

 public class RetailerActivity extends Activity {
 private static final String SOAP_ACTION = "retailer.com";
private static final String METHOD_NAME = "customerData";
private static final String NAMESPACE = "retailer.com";
private static final String URL = "http://192.168.1.249:8085/Retailer/services/RetailerWS?wsdl";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.setOutputSoapObject(request);

  HttpTransportSE ht = new HttpTransportSE(URL);
 try {
 ht.call(SOAP_ACTION, envelope);
 SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
 SoapPrimitive s = response;
 String str = s.toString();
 String resultArr[] = str.split("&");//Result string will split & store in an array

 TextView tv = new TextView(this);

  for(int i = 0; i<resultArr.length;i++){
  tv.append(resultArr[i]+"\n\n");
  }
setContentView(tv);

} catch (Exception e) {
e.printStackTrace();
}
}
}

Добавлено разрешение на доступ к Интернету в моем файле манифеста.

Тогда почему пустой экран отображается только на моем эмуляторе... Когда я ставлю ссылку WSDL владельца сайта, значит, она работает для меня... Но я помещаю свой URL-адрес, значит, он не работает для меня... но файл владельца WSDL и мой WSDL файл оба одинаковы только.. я проверил оба файла. Затем у меня возникла ошибка dis. Пожалуйста, направьте меня....

1 ответ

Проблема в том, что вы выполняете сетевой доступ в основном потоке пользовательского интерфейса. Android 3.0 и выше приведет к сбою вашего приложения (т.е. система NetworkAccessOnMainThread исключение), если вы пытаетесь выполнить HTTP-запрос в основном потоке. Вам нужно обернуть ваш HTTP-запрос в AsyncTask (или Thread некоторые виды), чтобы убедиться, что вы не блокируете поток пользовательского интерфейса.

Прочитайте мой пост в блоге на эту тему:

Почему мороженое сэндвич ломает ваше приложение

Другие вопросы по тегам