sameralkhalili Ответов: 1

Подключение к локальному хосту webservice в android ?


всем привет
я пытаюсь подключиться к локальному хосту asmx webservice, который вставляет данные в локальную базу данных из мобильного приложения с помощью android studio .

я получил ошибку
java.net.connectexception connection refused connect


могу ли я подключиться к localhost webservice из кода android , кстати, мой webservice отлично работает после запуска из visual studio

Что я уже пробовал:

это мой код в android studio :

=====класс = =====
public class ContactResult {

    public  static  int ErrorID  ;
    public static String ErrorMessage;
}


====== класс 2 ==============
public class CallWebservice {

    private final  String NAMESPACE= "http://tempuri.org/";
    private  final  String URL = "http://localhost:1844/AndroidWebService.asmx";


    public void OpenAccount(String FullName , String Phone) {
        final String METHOD_NAME = "OpenAccount";
        final String SOAP_ACTION = "http://tempuri.org/OpenAccount";
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        request.addProperty("FullName", FullName);
        request.addProperty("Phone", Phone);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        Object response = null;
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapObject result = (SoapObject) envelope.getResponse();
            ContactResult.ErrorMessage = result.getProperty("ErrorMessage").toString();
            ContactResult.ErrorID = Integer.parseInt(result.getProperty("ErrorID").toString());
        }
        catch (Exception e) {
            e.printStackTrace();
        }

    }


= = = = = = = = этот код внутри mainActivity ======================
protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  }

  public void addclick(View view) {

      final EditText txtname  = (EditText)findViewById(R.id.txtname);
      final EditText txtphone  = (EditText)findViewById(R.id.txtphone);

      Thread runt = new Thread(){
          public void run(){
              CallWebservice cweb  = new CallWebservice();
              cweb.OpenAccount(txtname.getText().toString() , txtphone.getText().toString());
          }
      };
      runt.start();
      try {
          runt.join();

      }
      catch (Exception ex){}
  }

F-ES Sitecore

"localhost" означает машину, на которой в данный момент выполняется код. Если этот код работает на вашем рабочем столе, а служба работает внутри узла IIS, то он будет работать. Если код находится на устройстве android, то ваш сервис также должен быть запущен на веб-хостинге на устройстве android. Если вы хотите, чтобы служба жила где-то за пределами android-устройства, то она должна быть на хосте, который android-устройство может разрешить\access, и код должен быть обновлен для доступа к этому хосту, а не к "localhost".

1 Ответов

Рейтинг:
7

Kornfeld Eliyahu Peter

"locahost", по определению, является локальным для компьютера, на котором он работает...
Если вы собираетесь получить доступ к любому веб-сервису с телефона, вы должны разместить его в открытом доступе, чтобы он был доступен отовсюду, точно так же, как CP доступен отовсюду...