У меня запущен webservice
, и я хочу вызвать метод веб-сервиса и должен показать результат в TextView
на мобильном телефоне. Веб-сервис работает очень хорошо, для тестирования я могу получить string response
от веб-сервиса. Но я хочу получить Xstream Object
.
Я создал Xstream object
, и он работает локально.
Когда я вызываю метод webservice для получения объекта xstream, используя KSOAP2
, я получаю исключение java.lang.classcastexception:org.ksopa2.soapFault
Пожалуйста, помогите.
package com.pxr.tutorial.soap.weather;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class Main extends Activity {
private String METHOD_NAME = "getName"; // our webservice method name
private String NAMESPACE = "http://webservice.app"; // Here package
// name in
// webservice
// with reverse
// order.
private String SOAP_ACTION = "http://webservice.app/getName"; // NAMESPACE
// +
// method
public TextView t; // name
private static String URL = "http://ip/WS/services/Service?wsdl";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("user", "user");
request.addProperty("passwort", "passwort");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
// Make the soap call.
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
t = (TextView) findViewById(R.id.resultbox);
// this is the actual part that will call the webservice
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result=(SoapObject)envelope.bodyIn;
//SoapObject result = (SoapObject) envelope.response();
if (result != null) {
XStream xstreams = new XStream(new DomDriver());
String text = result.getProperty(0).toString();
Testobjekt tob = (Testobjekt) xstreams.fromXML(text);
t = (TextView) findViewById(R.id.resultbox);
t.setText(tob.getName());
}
*/
} catch (Exception e) {
// TODO Auto-generated catch block
t.setText("FEHLER");
}
}
}
При отладке я получаю сообщение об ошибке в этой строке
SoapObject result=(SoapObject)envelope.bodyIn;
SoapObject result = (SoapObject) envelope.response();