项目需要用到soap开发,在网上搜索找到了ksoap2的andriod移植版。感觉都说不错,所以就用它做soap开发,刚开始用.net开发了简单的webservice,测试没有问题。
后来服务器端真实环境弄好了,是用php yii框架开发的webservice.
然后一样的代码去连接,在androidHT.call(SOAP_ACTION,envelope);这句话出现了异常,
提示
expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions name='AndriodController' targetNamespace='urn:AndriodControllerwsdl'>@2:363 in java.io.InputStreamReader@435b7208) 附上我的代码:
final String SOAP_ACTION = nameSpace + methodName;
SoapObject request = new SoapObject(nameSpace, methodName);
SoapObject soapResult=null;
if(params !=null && !params.isEmpty()){
for(Iterator it = params.entrySet().iterator();it.hasNext();){
Map.Entry<String, Object> e =(Map.Entry<String, Object>) it.next();
request.addProperty(e.getKey().toString(),e.getValue());
}
}
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.dotNet=true;
envelope.bodyOut = request;
/*AndroidHttpTransport androidHT = new AndroidHttpTransport(wsdl);
androidHT.call(SOAP_ACTION,envelope);
soapResult = (SoapObject)envelope.getResponse(); */
HttpTransportSE ht = new HttpTransportSE(wsdl);
ht.call(null, envelope);
soapResult = (SoapObject)envelope.getResponse();
return soapResult;
我各种都测试了用AndroidHttpTransport 或者 HttpTransportSE, call函数第一个用null或者SOAP_ACTION,出现还是一样的异常。我个人分析应该是解析wsdl文件应该出错了我后来用.net去连接这个phpwebservice,测试没有,难道net兼容性好?
真是郁闷,困扰我几天了,又没有代码,也没有办法调试,后来看到能反编译,不过反编译后代码有错误啊,如何去修改一个java文件,编译后去替换jar包呢??
有哪位大侠,知道的告知一声,在此感谢了!!!
后来服务器端真实环境弄好了,是用php yii框架开发的webservice.
然后一样的代码去连接,在androidHT.call(SOAP_ACTION,envelope);这句话出现了异常,
提示
expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions name='AndriodController' targetNamespace='urn:AndriodControllerwsdl'>@2:363 in java.io.InputStreamReader@435b7208) 附上我的代码:
final String SOAP_ACTION = nameSpace + methodName;
SoapObject request = new SoapObject(nameSpace, methodName);
SoapObject soapResult=null;
if(params !=null && !params.isEmpty()){
for(Iterator it = params.entrySet().iterator();it.hasNext();){
Map.Entry<String, Object> e =(Map.Entry<String, Object>) it.next();
request.addProperty(e.getKey().toString(),e.getValue());
}
}
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.dotNet=true;
envelope.bodyOut = request;
/*AndroidHttpTransport androidHT = new AndroidHttpTransport(wsdl);
androidHT.call(SOAP_ACTION,envelope);
soapResult = (SoapObject)envelope.getResponse(); */
HttpTransportSE ht = new HttpTransportSE(wsdl);
ht.call(null, envelope);
soapResult = (SoapObject)envelope.getResponse();
return soapResult;
我各种都测试了用AndroidHttpTransport 或者 HttpTransportSE, call函数第一个用null或者SOAP_ACTION,出现还是一样的异常。我个人分析应该是解析wsdl文件应该出错了我后来用.net去连接这个phpwebservice,测试没有,难道net兼容性好?
真是郁闷,困扰我几天了,又没有代码,也没有办法调试,后来看到能反编译,不过反编译后代码有错误啊,如何去修改一个java文件,编译后去替换jar包呢??
有哪位大侠,知道的告知一声,在此感谢了!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货