android 访问webservice问题

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

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

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

问题
新建一个Android项目,MyWebServiceHelper类代码:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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代码:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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;
     }
}

警告截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值