Я новичок в программировании на 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, но не смог найти ссылку, которая ссылалась на мою ошибку «Отказ в соединении».
Любая помощь очень ценится!