вызов веб-службы wcf с использованием ksoap2 в приложении для Android завершился ошибкой со следующей ошибкой java.net.SocketTimeoutException: время ожидания подключения - PullRequest
0 голосов
/ 07 мая 2011

Я новичок в Android, и я хотел позвонить в веб-службу wcf.Я нашел библиотеку ksoap2 и заявил, что применил найденные примеры. Приложению не удалось выдать следующее сообщение об ошибке: java.net.SocketTimeoutException: Тайм-аут соединения.Я установил права доступа к файлу manafist следующим образом:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

Я также добавил прокси, порт, имя пользователя и пароль из приложения настройки эмулятора-> беспроводные и сетевые-> мобильные сети-> ДоступИмена точек.Я также добавил следующую строку из конфигурации запуска к дополнительным параметрам командной строки эмулятора:

-dns-server ns15.unitechost.in

Но, тем не менее, это не сработало, приветствуется любая помощь.

Обновление

Я настроил параметр прокси-сервера из командной строки при запуске AVD с помощью следующей команды:

emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]

Теперь я получил следующее исключение:

org.xmlpull.v1.XmlPullParserException: unexpected type (position:TEXT HTTP/1.1 500 Int...@11:1 in java.io.InputStreamReader@40531d48)

Я видел примеры использования веб-службы .asmx с использованием ksoap2. Можно ли это сделать и на веб-службе .svc?Я использую прикрепленный код, я получил от одного, если примеры:

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

public class Main extends Activity {
    /** Called when the activity is first created. */

    private static final String SOAP_ACTION = "http://tempuri.org/Istock/getCountry";
    private static final String OPERATION_NAME = "getCountry";
    private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
    private static final String SOAP_ADDRESS = "http://127.0.0.1:8080/Service1.svc";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        setContentView(textView);
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
        OPERATION_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        try
        {

        httpTransport.call(SOAP_ACTION, envelope);
        Object response = envelope.getResponse();
        textView.setText(response.toString());
        System.out.println(response.toString());
        }
        catch (Exception exception)
        {
        String exceptionStr=exception.toString();
        textView.setText(exceptionStr);
        System.out.println(exceptionStr);
        Log.i("TAG",exceptionStr);
        }

    }

}

Спасибо,

Ответы [ 4 ]

0 голосов
/ 05 апреля 2017

добавить это:

StrictMode.ThreadPolicy policy = new   StrictMode.ThreadPolicy.Builder().permitAll().build(); 
        StrictMode.setThreadPolicy(policy);
0 голосов
/ 12 июня 2011

Вы не можете получить доступ к своему локальному компьютеру, используя localhost или 127.0.0.1 с Android.Вам нужно использовать 10.0.2.2 для доступа к вашей локальной машине.

На самом деле я не получил Android для правильного подключения к службе WCF ...

0 голосов
/ 02 мая 2012

Хотя это может быть немного поздно, вот что исправило это для меня:

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,60000);

Обратите внимание на второй параметр, который является значением тайм-аута.

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

0 голосов
/ 09 мая 2011

Тайм-ауты подключения происходят, когда:

  • IP-адрес запрошенного сервера успешно найден
  • Пакеты установления соединения отправляются на IP-адрес
  • Пункт назначенияадрес преднамеренно игнорирует или не получает их

Аналогично тайм-ауту соединения - Соединение отклонено, но в этом случае система назначения фактически отправляет пакеты обратно, говоря: «Уходите, на порту не работает служба»вы пытаетесь подключиться к "

Превышено время ожидания подключения - это ожидаемое поведение в сетевой среде.Это даже более ожидаемо в мобильной среде, где сетевые соединения могут быть ненадежными.Это означает, что сервер не отвечает в течение определенного количества секунд.

...