ksoap-android出现expected: START_TAG错误求教

lofe811 2010-09-13 01:43:53
项目需要用到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包呢??


有哪位大侠,知道的告知一声,在此感谢了!!!
...全文
941 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Durton 2011-12-04
  • 打赏
  • 举报
回复
遇到同样问题,求解。。。
Durton 2011-12-04
  • 打赏
  • 举报
回复
1. 在AndroidManifest.xml 中加入 访问网络的权限。

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



2. namespace和url 中 ip、port请尽量填写WIFI或者公网,因为如果你用手机去模拟上传,你的手机是连接不到内网的(如IP:192.168.1.1或 localhost)。



3. Webservice服务器的Soap版本为1.0,所以客户端指定

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); VER11改为VER10



4. String url = "http://134.192.44.105:8080/SSH2/service/IService?wsdl";

Url指的是你的webservice的地址.一般都是以***.wsdl或者***.?wsdl结束的...但是.需要注意的是..要去掉后面的.wsdl或者.?wsdl。

本人服务器端是用 xfire-all-1.2.6.jar 写webservice接口,调用webservice的时候 把 ?wsdl 去掉,就能成功访问。

网上粘的。。。我就卡在第四条上,找了一晚上。。。
gaoke966 2011-11-30
  • 打赏
  • 举报
回复
解决了吗
azhe0929 2011-11-01
  • 打赏
  • 举报
回复
同样的问题,我也遇上了,.net 可以,java不行
lofe811 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ultrapro 的回复:]

你用SoapUI测试一下,接口,看有问题么
[/Quote]
测试了一下,没有问题接口,我用.net工程访问也没有问题,真是晕倒。我感觉是SoapEnvelope版本问题
lofe811 2010-09-13
  • 打赏
  • 举报
回复
好的,我去下载安装一个测试一下
儿大不由爷 2010-09-13
  • 打赏
  • 举报
回复
你用SoapUI测试一下,接口,看有问题么

80,352

社区成员

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

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