getting parameter error in ksoap 2 android

心已入冬 提交于 2019-12-12 02:22:29

问题


I am using calling webservice using ksoap2 in android

I am getting this error

SoapFault - faultcode: 'soap:Server' faultstring: 'Server was unable to process request. ---> The parameterized query 
java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject

I am adding parameter using propertyInfo

            PropertyInfo fromProp =new PropertyInfo();
            fromProp.setName("uname");
            fromProp.setValue("test");
            fromProp.setType(String.class);
            request.addProperty(fromProp);
            PropertyInfo toProp =new PropertyInfo();
            toProp.setName("pwd");
            toProp.setValue("test");
            toProp.setType(String.class);
            request.addProperty(toProp);

request shows up like this

validLogin{uname=simar; pwd=simar; }

Things i have tried

1) Commenting and uncommenting of following line

envelope.dotNet = true;

2) No server side error as without parameter the connection can be done and get the dummy result

3) Even Tried this

request.addProperty("uname","simar");

request.addProperty("pwd","simar");


回答1:


I merged knowledge from Your prev post and from this one. You Have problem with call parameters (fe. lack of slash on the end of namespace "http://23.253.164.20:8096/") and with lack of namespace on parameters uname and pwd. I really recommend to use SoapUI to compare correct request with what You have in transport.requestDump.

Working code:

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/validLogin";
private static final String METHOD = "validLogin";
public String getFahrenheit(String celsius) {

        try {
            // SoapEnvelop.VER11 is SOAP Version 1.1 constant
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER12);
            SoapObject request = new SoapObject(NAMESPACE, METHOD);
            PropertyInfo fromProp =new PropertyInfo();
            fromProp.setName("uname");
            fromProp.setValue("test");
            fromProp.setType(String.class);
            fromProp.setNamespace(NAMESPACE);
            request.addProperty(fromProp);
            PropertyInfo toProp =new PropertyInfo();
            toProp.setName("pwd");
            toProp.setValue("test");
            toProp.setType(String.class);
            toProp.setNamespace(NAMESPACE);
            request.addProperty(toProp);
            //bodyOut is the body object to be sent out with this envelope
            envelope.bodyOut = request;
            envelope.implicitTypes=true;
            HttpTransportSE transport = new HttpTransportSE(URL);
            transport.debug=true;
            try {
//                      transport.call(NAMESPACE + SOAP_ACTION_PREFIX + METHOD, envelope);
                transport.call(SOAP_ACTION_PREFIX, 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);
                System.out.println(resultSOAP.toString());
            }


来源:https://stackoverflow.com/questions/29746895/getting-parameter-error-in-ksoap-2-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!