android web services6

android 环境下 ksoap2 连接webservice.

浏览次数:853次 悬赏分:120 | 解决时间:2011-6-24 15:00 | 提问者:宝宝和妖怪 | 检举

问题补充:

android 环境下 ksoap2 连接webservice.
    	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();
    	}
ht.call 异常 异常信息
org.xmlpull.v1.XmlPullParserException: expected: END_TAG android  菜鸟 寻求帮助。
最佳答案
1. 必须确保应用已经添加了网络通信权限

    <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。

你可能感兴趣的:(web services)