java.lang.ClassCastException: org.ksoap2.SoapFault

Mars2639 2011-07-27 11:05:48
- 在服务器上有一Webservice 地址:http://117.40.139.43:5000/BitcareMobileService/MobileRegister.asmx?op=GetHosInfoAll
- 然后我想获取里面的数据。
用这个方法连接服务器上的Webservice
public String[] GetHosInfoAll(String SOAP_ACTION,String methodName,String MethodDataResult,String HospitalID)throws Exception{
String[][] data = {{"HospitalID",HospitalID}};
return GetArray(SOAP_ACTION,methodName,MethodDataResult,data);
}
然后再用这个方法输出获取到的字符串
public void testGetHosInfoAll() throws Exception{
GetWebService getWebService = new GetWebService();
String[] value = getWebService.GetHosInfoAll("http://tempuri.org/GetHosInfoAll", "GetHosInfoAll", "GetHosInfoAllResult", "07910001");
Log.i(TAG,"testGetHosInfoAll:"+new Integer(value.length).toString());
Log.i(TAG,"testGetHosInfoAll:"+value[0]+value[1]+value[2]);
}
- 但是,却报了java.lang.ClassCastException: org.ksoap2.SoapFault这个错。

- 提示这里:SoapObject result = (SoapObject) envelope.bodyIn;有问题。
- 希望各位专家能为小弟指点一二……谢谢!
...全文
6071 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
inweriok抹香鲸 2013-05-22
  • 打赏
  • 举报
回复
求指点呀!!!
引用 17 楼 yangzhuifeng12345678 的回复:
你打印一下envelope.bodyIn内容,很可能是服务器错误 我曾经遇到这样的错误是由服务器以下原因造成的,希望对你有帮助 1、 INFO/System.out(2185): SoapFault - faultcode: 'soapenv:Server.userException' faultstring: 'java.lang.NullPointerException' faultactor: 'null' detail: org.kxml2.kdom.Node@40662450 是服务器数据库未开启 2、null 服务器防火墙未关闭
inweriok抹香鲸 2013-05-22
  • 打赏
  • 举报
回复
引用 18 楼 yangzhuifeng12345678 的回复:
3、null 还有可能是服务器IP更改
请问服务器IP更改是什么意思。。。。我是在自己计算机上写的WEBSERVICE 之前调用bodyIn的时候显示java.lang.ClassCastException: org.ksoap2.SoapFault 这个错误 改成response()方法之后 就变成了 W/System.err(824): SoapFault - faultcode: 'soapenv:Server' faultstring: '3' faultactor: 'null' detail: org.kxml2.kdom.Node@46058dd8
weipt 2013-05-06
  • 打赏
  • 举报
回复
就是webservice的空间的问题
hanghangup 2013-01-30
  • 打赏
  • 举报
回复
我现在也在做这,LZ解决了吗?求解啊
  • 打赏
  • 举报
回复
3、null
还有可能是服务器IP更改
  • 打赏
  • 举报
回复
你打印一下envelope.bodyIn内容,很可能是服务器错误
我曾经遇到这样的错误是由服务器以下原因造成的,希望对你有帮助
1、 INFO/System.out(2185): SoapFault - faultcode: 'soapenv:Server.userException' faultstring: 'java.lang.NullPointerException' faultactor: 'null' detail: org.kxml2.kdom.Node@40662450
是服务器数据库未开启
2、null
服务器防火墙未关闭
  • 打赏
  • 举报
回复
我也有同样的错误,后面我把 soapObject = (SoapObject) envelope.bodyIn换成soapObject = (SoapObject) envelope.getResponse();就可以了
狮村小孩 2011-10-14
  • 打赏
  • 举报
回复
楼主问题解决了吗? 我也遇到了同样的问题,一检查原来是做服务器的同事把命名空间给改了。
leolaurel 2011-09-30
  • 打赏
  • 举报
回复
加上下面一句 应该就OK了
envelope.dotNet = true;
justaswind 2011-09-02
  • 打赏
  • 举报
回复
soapObject.addProperty(data[i][0], data[i][1]);
第一个参数名称与WebService中定义不一致时可能会报java.lang.ClassCastException: org.ksoap2.SoapFault错误。
song121 2011-08-12
  • 打赏
  • 举报
回复
二楼说的对。可以试试
Mars2639 2011-08-10
  • 打赏
  • 举报
回复
- 没人帮忙!!!
- 分就给了吧……
liyixiaohappy 2011-08-01
  • 打赏
  • 举报
回复
不错啊,谢谢赐教
Mars2639 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gistop 的回复:]
Android 自带 ksoap2 了???
[/Quote]

- ksoap2 for android ! 谢谢指正!
- KSOAP2 Android项目提供了一个为Android平台的轻量级和高效的SOAP库!
Mars2639 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 soft200816 的回复:]
HTML code

http://stackoverflow.com/questions/4439934/accessing-the-webservice-in-android-using-ksoap2
[/Quote]

能说一下详细的解决方案吗?
soft200816 2011-07-29
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/4439934/accessing-the-webservice-in-android-using-ksoap2
gistop 2011-07-29
  • 打赏
  • 举报
回复
Android 自带 ksoap2 了???
Mars2639 2011-07-29
  • 打赏
  • 举报
回复
String namespace = null;
//服务器发布的url
String url = null;
public GetWebService() {
this.namespace = "http://tempuri.org/";
this.url = "http://117.40.139.43:5000/BitcareMobileService/MobileRegister.asmx";
}

//获得数组的情况
public String[] GetArray(String SOAP_ACTION,String methodName,String MethodDataResult,String[][] data) throws Exception{
String value=null;
String[] resultstring=null;
// 指定WebService的命名空间和函数名
SoapObject soapObject = new SoapObject(namespace, methodName);
// 设置调用方法参数的值
if(data != null) {
for(int i = 0;i<data.length;i++)
soapObject.addProperty(data[i][0], data[i][1]);
}
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.bodyOut=soapObject;
envelope.setOutputSoapObject(soapObject);
// 创建HttpTransportSE对象,通过HttpTransportSE类的构造方法可以指定WebService的url
AndroidHttpTransport transport = new AndroidHttpTransport(url);
transport.debug = true;
//使用call方法调用WebService方法
try {
transport.call(SOAP_ACTION, envelope);//transport.call(null, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject detailfirst = (SoapObject) result.getProperty(MethodDataResult);
if(envelope.getResponse()!=null){
int numfirst = detailfirst.getPropertyCount();
resultstring = new String[numfirst];
for(int i =0;i<numfirst;i++){
resultstring[i] = detailfirst.getProperty(i).toString();
}
}else{
value ="获取到空的XML字符串";
}
} catch (IOException e) {
value ="IOException and XML error";
e.printStackTrace();
} catch (XmlPullParserException e) {
value ="XmlPullParserException未获取到XML字符串";
e.printStackTrace();
}
return resultstring;
}

- 然后是上面写的两个调用的方法……
Mars2639 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 read_act 的回复:]
首先你的结贴率有点低!

其次,核心代码没贴上来, 你是不是用的ksoap2包连接webService ?

一行与soap相关代码都没看到
[/Quote]
- 额,结贴率低,这页面显示的是33。33%
- 我其他页面显示的都是80%,这貌似不能说明是我的原因吧。
- 用的是Android自带的ksoap2包连接webService……
Mars2639 2011-07-29
  • 打赏
  • 举报
回复
- 这类型转换就过不去了……怎么能把Object类型强制转换成SoapObject类型呢???
加载更多回复(2)

80,352

社区成员

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

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