使用kSOAP2在Android中获取错误
我得到的错误是 org.ksoap2.SoapFault不能强制转换为org.ksoap2.serialization.SoapObject使用kSOAP2在Android中获取错误,android,web-services,ksoap2,android-ksoap2,Android,Web Services,Ksoap2,Android Ksoap2,我得到的错误是 org.ksoap2.SoapFault不能强制转换为org.ksoap2.serialization.SoapObject public final static String URL = "http://23.253.164.20:8096/login.asmx"; public static final String NAMESPACE = "http://23.253.164.20:8096"; public static final String SOAP_ACTION
public final static String URL = "http://23.253.164.20:8096/login.asmx";
public static final String NAMESPACE = "http://23.253.164.20:8096";
public static final String SOAP_ACTION_PREFIX = "http://23.253.164.20:8096/getName";
private static final String METHOD = "getName";
private class AsyncTaskRunner extends AsyncTask<String, String, String> {
private String resp;
@Override
protected String doInBackground(String... params) {
publishProgress("Loading contents..."); // Calls onProgressUpdate()
try {
// SoapEnvelop.VER11 is SOAP Version 1.1 constant
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
SoapObject request = new SoapObject(NAMESPACE, METHOD);
//bodyOut is the body object to be sent out with this envelope
envelope.bodyOut = request;
HttpTransportSE transport = new HttpTransportSE(URL);
try {
transport.call(NAMESPACE + SOAP_ACTION_PREFIX + METHOD, envelope);
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
//bodyIn is the body object received with this envelope
if (envelope.bodyIn != null) {
//getProperty() Returns a specific property at a certain index.
SoapPrimitive resultSOAP = (SoapPrimitive) ((SoapObject) envelope.bodyIn)
.getProperty(0);
resp=resultSOAP.toString();
}
} catch (Exception e) {
e.printStackTrace();
resp = e.getMessage();
}
return resp;
}
/**
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
// execution of result of Long time consuming operation
// In this example it is the return value from the web service
textView.setText(result);
}
public最终静态字符串URL=”http://23.253.164.20:8096/login.asmx";
公共静态最终字符串命名空间=”http://23.253.164.20:8096";
公共静态最终字符串SOAP\u操作\u前缀=”http://23.253.164.20:8096/getName";
私有静态最终字符串方法=“getName”;
私有类AsyncTaskRunner扩展了AsyncTask{
私有字符串resp;
@凌驾
受保护的字符串doInBackground(字符串…参数){
publishProgress(“加载内容…”);//调用onProgressUpdate()
试一试{
//SOAPEnvelope.VER11是SOAP版本1.1常量
SoapSerializationEnvelope=新的SoapSerializationEnvelope(
第11版);
SoapObject请求=新的SoapObject(名称空间、方法);
//bodyOut是要与此信封一起发送的body对象
envelope.bodyOut=请求;
HttpTransportSE传输=新的HttpTransportSE(URL);
试一试{
调用(名称空间+SOAP\u操作\u前缀+方法,信封);
}捕获(IOE异常){
e、 printStackTrace();
}catch(XMLPullParseRexE){
e、 printStackTrace();
}
//bodyIn是使用此信封接收的body对象
if(envelope.bodyIn!=null){
//getProperty()返回特定索引处的特定属性。
SoapPrimitive结果SOAP=(SoapPrimitive)((SoapObject)信封.bodyIn)
.getProperty(0);
resp=resultSOAP.toString();
}
}捕获(例外e){
e、 printStackTrace();
resp=e.getMessage();
}
返回响应;
}
/**
*
*@see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@凌驾
受保护的void onPostExecute(字符串结果){
//执行耗时较长的操作的结果
//在本例中,它是来自web服务的返回值
setText(结果);
}
可能性检查
1) 互联网许可
2) Ksoap2库已导入
3) 服务器端方法正在运行(您可以输入URL)
4) 不在模拟器上运行,而是在手机上运行
整个代码中有一些bug
- 没有方法“getName”-看起来你的意思是“getGreetingForName”,但我不确定,因为你没有提供参数“stringName”
- NAMESPACE=“”;-在末尾添加斜杠
- 调用(名称空间+SOAP\u操作\u前缀+方法,信封)
- 这是不正确的-因为此处调用的方法是“”