Reputation: 303
I am trying to call SOAP web service using one WSDL file.
I have added all required parameters in it. But I am getting error as below:
SoapFault - faultcode: 'ns1:unexpected-error' faultstring: 'Fault occurred while processing.' faultactor: 'null' detail: null in android
Here is my code sample:
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", "[email protected]");
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();
}
}
I doubt that the SOAPACTION might be causing issue. Is that possible if we have SOAPACtion blank and we call web service?
I have used same code for other web service, with .svc url, and works fine, so I dont think code should have any problem.
SOAP version:1.1 ksoap library version: ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar
Any help is appreciated.
Thanks
Upvotes: 8
Views: 1529
Reputation: 395
You need to check whether SOAP wsdl has which style, document or RPC.
both have different WSDL format, and it may possible, if you try to call WSDL with document type, might not give response with same code work for other one.
So please cross check this and confirm.
Regards
Upvotes: 0
Reputation: 852
Try replacing result1 = (SoapPrimitive)envelope.getResponse();
by
result1 = (SoapPrimitive)envelope.bodyIn();
and also set a SOAP_ACTION !
Also this is how you add a property to the request :
PropertyInfo pi = new PropertyInfo();
pi.name = NAME;
pi.type = String.class;
request.addProperty(pi, VALUE);
Upvotes: 1