Не удается подключиться к веб-сервису .net (.asmx) с Eclipse. - PullRequest
1 голос
/ 20 января 2012

Я новичок в программировании на Eclipse и Android в целом, но передо мной была поставлена ​​задача создать приложение для моей компании, которое подключится к нашему SQL Server для чтения некоторых данных в качестве подтверждения концепции. Я скачал и установил Eclipse Eplison и необходимый Java / Android SDK. Я хотел начать с простого, поэтому я создал приложение с кнопкой и видом на нее, и оно собирается и работает нормально. Затем я создал простой WebService в .NET (vs2010) и запустил его на моем локальном хосте. Переход к нему работает найти (через IE), и он работает как запланировано. Вот код для веб-службы (называемый Service1.asmx):

    [WebMethod]
    public string DisplayText(string TextToDisplay)
    {
        return TextToDisplay;
    }

Теперь я пытаюсь заставить кнопку вызывать веб-сервис и отображать любой передаваемый текст. Вот код, который я использую в Eclipse:

package com.test.android;

import org.ksoap2.*;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.*;

import android.app.*;
import android.os.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

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

private static final String SOAP_ACTION = "http://localhost/MyWebService/DisplayText";
private static final String MethodName = "DisplayText";
private static final String NameSpace = "http://tempuri.org/"; // "http://localhost/testservice/";
private static final String URL = "http://localhost/MyWebServices/Service1.asmx?wsdl";
TextView tv;

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

    tv=(TextView)findViewById(R.id.tvMessage);

    Button btn = (Button)findViewById(R.id.btnPress);
    btn.setOnClickListener(btnListener);
}

public void CallWebService()
{
try { 
        SoapObject request = new SoapObject(NameSpace, MethodName);         
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        envelope.dotNet=true; 
        request.addProperty("TextToDisplay", "This is coming from android");
        envelope.setOutputSoapObject(request); 

        androidHttpTransport.call(SOAP_ACTION, envelope); 

        SoapObject result = (SoapObject)envelope.getResponse(); 
        tv.setText( ""+result); 
    } 
    catch (Exception e) { 
        tv.setText(e.getMessage()); 
    }       
}

private OnClickListener btnListener = new OnClickListener()
{
    public void onClick(View v)
    {
        CallWebService();
    }
};
}

Когда я запускаю его в моем AVD, я получаю следующую ошибку: localhost / 127.0.0.1: 80 - соединение отклонено

Есть идеи, почему? Я просмотрел множество ссылок, касающихся asmx и eclipse, но не смог найти ссылку, которая ссылалась на мою ошибку «Отказ в соединении».

Любая помощь очень ценится!

1 Ответ

1 голос
/ 20 января 2012

Попробуйте использовать IP-адрес 10.0.2.2 вместо localhost для вашего URI.

Выезд: этот URL

Прокрутите до половины и найдите «Сетевое адресное пространство»

...