刚开始自学Android,很多不懂得的地方。这个问题一直找不到原因:
在网上查到资料Android连接远程数据库要用WebService,用koap2获取WebService的数据。
我这里是做一个登陆的简单测试:
我用Eclipse新建了Dynamic Web Project项目:webTest,写好相关代码,连接数据库测试成功。之后在IPersonImp的类的文件名上点击右键,选择”Web Services"->“Create Web Service”自动创建webservice :

将工程部署到Tomcat下,启动Tomcat,在浏览器中输入网址,能够找到wsdl:

浏览器测试登陆效果(密码错误,返回结果为fail):

问题:
新建一个Android项目,MyWebServiceHelper类代码:
import java.io.IOException;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
public class MyWebServiceHelper {
// WSDL文档中的命名空间
private static final String targetNameSpace = "http://service.main";
// WSDL文档中的URL
private static final String WSDL = "http://localhost:8181/webTest/services/IPersonImp";
//需要调用的方法名(获得Myervices中的login方法)
private static final String login="login";
public String login(String uname, String pwd){
String reutrnResult = null;
SoapObject request =new SoapObject(targetNameSpace,login);
request.addProperty("uname", uname);
request.addProperty("pwd", pwd);
Log.i("mylog", "request---" + request);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTranstation = new HttpTransportSE(WSDL);
try {
Log.i("mylog", "info---" + httpTranstation);//日志打印到这里,就转入下面catch (IOException e)部分
httpTranstation.call(targetNameSpace+login, envelope);
Log.i("mylog", "info");
if(envelope.getResponse() != null){
SoapObject soapObject = (SoapObject) envelope.getResponse();
Log.i("mylog", "用户名--------"+soapObject.getProperty("name"));
Log.i("mylog", "密码--------"+soapObject.getProperty("pwd"));
reutrnResult = "ok";
}
} catch (IOException e) {
Log.e("mylog", "error------1111");
e.printStackTrace();
reutrnResult = "连接WSDL失败--1";//运行时android界面返回这个结果
} catch (XmlPullParserException e) {
Log.e("mylog", "error------2222");
reutrnResult = "连接WSDL失败--2";
e.printStackTrace();
}
return reutrnResult;
}
}
Logcat错误信息:

第一句系统错误信息是连接失败:java.net.ConnectException:failed to connect to localhost/127.0.0.1 (port 8181): connect failed: ECONNREFUSED (Connection refused)
android界面:
