android 环境下 ksoap2 连接webservice.

本文详细介绍了在Android应用中实现网络通信及SOAP请求的关键步骤,并分享了调试过程中遇到的问题及解决方案,包括确保网络权限配置正确、使用域名而非IP地址作为HOST、以及正确设置SOAP信封版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     String serviceURL = "http://10.110.111.208:3000/iam/service/AndroidLoginService";
     String methodName = "login";
     SoapObject request = new SoapObject("http://10.110.111.208:3000/iam/service/AndroidLoginService",methodName);
     request.addProperty("userName",etAccount.getText().toString());
     request.addProperty("password",etPassword.getText().toString());
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
     envelope.bodyOut = request;
     HttpTransportSE ht = new HttpTransportSE(serviceURL);
     try{
     ht.call(null, envelope);
     if(envelope.getResponse()!=null){
     mTextView.setText(envelope.getResponse().toString());
     }
     } catch(Exception e){
     e.printStackTrace();
     }

1. 必须确保应用已经添加了网络通信权限

  在你的AndroidManifest.xml文件的</manifest>节点上面添加<uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.INTERNET" />

 

2. soap请求的URL中的HOST部分不要使用ip地址,使用域名

 

3. SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    中的SOAP VER要和服务端对应,也可以低于服务端,但是不能高于服务端。

上述三点缺一不可,我讲述一下我的折腾过程供大家参考,

我最初由于马虎,没有做条件1 ,结果会报UnkownHostException,误导我把域名改为IP,

把域名改为IP后,虽然不会报UnkownHostException了,但是会报缺少权限,于是我加上条件1的权限,

加完之后,一切都正确,就总是报 org.xmlpull.v1.XmlPullParserException: expected: START_TAG ,

于是尝试修改SOAP信封版本,VER10 VER11 VER12 三种都试了,无效。

回忆起曾把请求URL中的域名改为IP,于是将IP改回域名,问题解决。

仔细看了一下服务端的版本,是VER11,于是尝试用VER12发送请求,

又报org.xmlpull.v1.XmlPullParserException: expected: START_TAG 了。

尝试用VER10,可以收到正确的response。

 

 

如何显示网络图片,请参考:http://www.189works.com/portal.php?mod=view&aid=47335

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值