Android连接WebService失败,帮我看看是什么原因

yingyoulan 2013-05-04 11:15:27
刚开始自学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界面:

这时候Tomcat是启动状态,我刷新http://localhost:8181/webTest/services/IPersonImp?wsdl页面能访问到wsdl,可是为什么Android连接会失败呢?


另外还有一个问题(第二个问题,与第一个问题无关
webTest工程里面的IPersonImp类,当它里面有getCompanyList方法(返回一个集合)时,点击右键,选择”Web Services"->“Create Web Service”自动创建webservice会出现警告,是什么原因啊?如果只有login方法(返回String)就没关系,反正就不能返回集合
IPersonImp代码:

public class IPersonImp implements IPerson {
PersonDAO comdao=new PersonDAO();
//得到所有用户列表
public List<Person> getCompanyList() {
List<Person> list=new ArrayList<Person>();
try {
list=comdao.getCompanyList();
} catch (SQLException e) {
e.printStackTrace();
list=null;
}
return list;
}

public String login(String uname, String pwd) {
// TODO Auto-generated method stub

Person com = new Person();
com = comdao.login(uname, pwd);
String result = "fail";
if(com != null){
result = "success";
}

return result;
}
}

警告截图:
...全文
1233 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanyuv 2015-08-28
  • 打赏
  • 举报
回复
这个和你的机器设置有关系,有点复杂,如果需要,请联系我qq:1302557666
yingyoulan 2014-03-14
  • 打赏
  • 举报
回复
引用 5 楼 zengwenman 的回复:
楼主,手机连接不上那个问题解决了吗
由于我用的是模拟器,而不是真机,不能用localhost访问 根据#1楼的回复把localhost改为10.0.2.2已经解决了
zengwenman 2013-09-21
  • 打赏
  • 举报
回复
楼主,手机连接不上那个问题解决了吗
liu130620 2013-08-03
  • 打赏
  • 举报
回复
楼主发一下源码看看白?最近正在看webservice这一块但是看不懂啊,还是不知道应该怎么访问webservice
a_mean 2013-05-04
  • 打赏
  • 举报
回复
虚拟机访问本机,不用能localhost或127.0.0.1,得用10.0.0.2。
yingyoulan 2013-05-04
  • 打赏
  • 举报
回复
引用 1 楼 a_mean 的回复:
虚拟机访问本机,不用能localhost或127.0.0.1,得用10.0.0.2。
另外,能不能帮我看看上面的第二个问题是怎么回事? 为什么返回List集合时,选择”Web Services"->“Create Web Service”自动创建webservice会出现上面截图中的警告?
yingyoulan 2013-05-04
  • 打赏
  • 举报
回复
引用 1 楼 a_mean 的回复:
虚拟机访问本机,不用能localhost或127.0.0.1,得用10.0.0.2。
谢谢,我把localhost改为10.0.2.2就可以登录了。如果不是模拟器而是手机,那我能用这个方法测试本地的localhost服务吗?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧