我试图使用一个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
任何帮助表示赞赏.
谢谢