SoapFault – faultcode:’ns1:unexpected-error’android SOAP call

前端之家收集整理的这篇文章主要介绍了SoapFault – faultcode:’ns1:unexpected-error’android SOAP call前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用一个WSDL文件调用SOAP Web服务.

我在其中添加了所有必需的参数.
但我收到的错误如下:

SoapFault - faultcode: 'ns1:unexpected-error' faultstring: 'Fault occurred while processing.' faultactor: 'null' detail: null in android

这是我的代码示例:

class RegisterMember extends AsyncTask<Void,Void,Void> {
    String SOAP_ACTION =  "";
    String METHOD_NAME = "registerMember";
    String NAMESPACE = "http://XXXXX.XX"; 
    String URL="http://XXXX.XX?WSDL";

    SoapPrimitive result1;
    String str;
    @Override
    protected void onPreExecute() {
        mProgressDialog = new ProgressDialog(MainActivity.this);
        mProgressDialog.setMessage("Checking For Activation");
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            StringBuffer sb;
            SoapObject request=new SoapObject(NAMESPACE,METHOD_NAME);

            request.addProperty("name","XXXX");
            request.addProperty("email","XXXX@gmail.com");
            request.addProperty("username","XXXXX");
            request.addProperty("password","XXXX");
            request.addProperty("mobile","XXXXXXX");
            request.addProperty("pin","XXXX");
            request.addProperty("dob","XX/XX/XXXX");
            request.addProperty("gender","male");
            request.addProperty("address","XXXXX");
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);

            envelope.bodyOut = request;
            Log.d("In try","In Try");
            HttpTransportSE ht = new HttpTransportSE(URL);

            ht.call(NAMESPACE+METHOD_NAME,envelope);
            Log.d("In try","In Try1");
            result1 = (SoapPrimitive)envelope.getResponse();
            //SoapObject resultObj =  (SoapObject)envelope.getResponse();
            /*int numProp = resultObj.getPropertyCount();

            sb = new StringBuffer();
            for(int jj=0; jj<numProp; jj++) {
                sb.append((String) resultObj.getProperty(jj) + "\n");
                Log.d("For Loop",String.valueOf(sb.append((String) resultObj.getProperty(jj))));
            }*/

            Log.d("Envelope",String.valueOf(result1));
            // str = envelope.getResponse();
            // status= Boolean.valueOf(result1.toString());
            // str = result1.toString();
            Log.w("String Response of CheckActivation Status - - - - - - - - - -",str);
            Log.w("CheckActivation Status - - - - - - - ->>>>>>>>>",String.valueOf(result1));
        } catch (Exception e) {
            Log.d("No Data Found",e +"");
        }

        try {
            Thread.sleep(1000);
        } catch(Exception ex) {

        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        Log.d("Response = = = = =",String.valueOf(result));

        mProgressDialog.dismiss();
    }
}

我怀疑SOAPACTION可能会导致问题.如果我们将SOAPACtion留空并且我们调用Web服务,那可能吗?

我使用相同的代码用于其他Web服务,使用.svc url,并且工作正常,所以我不认为代码应该有任何问题.

SOAP版本:1.1
ksoap库版本:ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar

任何帮助表示赞赏.

谢谢

解决方法

尝试替换result1 =(SoapPrimitive)envelope.getResponse(); by
result1 = (SoapPrimitive)envelope.bodyIn();

并设置SOAP_ACTION!
这也是您向请求添加属性方法

PropertyInfo pi = new PropertyInfo();
    pi.name = NAME;
    pi.type = String.class;
    request.addProperty(pi,VALUE);

猜你在找的Android相关文章