Тайм-аут соединения ksoap2 - PullRequest
       3

Тайм-аут соединения ksoap2

0 голосов
/ 25 сентября 2011

Я пытаюсь вызвать веб-сервис .net из эмулятора Android, но получаю исключение тайм-аута соединения.

Прежде чем попытаться позвонить на мой веб-сервис, я без проблем позвонил на http://www.w3schools.com/webservices/tempconvert.asmx.

Итак, я предполагаю, что либо у меня что-то не так в моем веб-сервисе .net, либо в приложении для Android.

.net - это

* * 1010

и Java

private static final String METHOD_NAME = "Get";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://10.0.0.2:2807/webservices/webService.asmx";
private static String SOAP_ACTION = NAMESPACE+METHOD_NAME;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        request.addProperty("pageIndex", "0");
        request.addProperty("pageSize", "10");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet=true;
        envelope.setOutputSoapObject(request);

        AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject result=(SoapObject)envelope.getResponse();

        String resultData=result.getProperty(0).toString();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Вы должны попытаться увеличить время ожидания, как уже упоминалось, но что более важно, вы должны переместить ваш вызов в фоновую ветку. Используйте AsyncTask.

Также, как обсуждалось в комментарии, в вики ksoap2-android есть ссылка на блог, в которой подробно объясняется, что такое соединение. Вы НЕ МОЖЕТЕ использовать localhost или его эквивалент, поскольку он находится на устройстве, но ваша служба работает на сервере ... теперь, когда я снова посмотрю на код ... 10.0.0.2, скорее всего, работать не будет.

Выполните ifconfig / ipconfig на сервере и используйте этот IP-адрес. Держу пари, тогда это сработает.

0 голосов
/ 27 сентября 2011

Вы можете попытаться увеличить время ожидания для вызова следующим образом:

AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL, 15000);
...