2013-12-04 4 views
2

Пожалуйста, кто-нибудь установить этот код, я попытался несколько различных кода для разбора мыльного конверта, как обрабатывать этот тип ответаКак разобрать комплекс SoapFault опротестовать

public class Main Activity extends Activity 
    { 
     TextView res; 
     String str, he, hh; 
     SoapSerializationEnvelope envelope; 
     private final String URL = "http://10.0.2.2:port/Service1.svc?wsdl"; 
     private final String NAMESPACE = "http://tempuri.org/"; 
     private final String SOAP_ACTION = "http://tempuri.org/IService1/GetData"; 
     private final String METHOD_NAME = "GetData"; 

     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      Log.d("Hello", "Fault_Exception_WebService Project Called........."); 

      myasynctask MAT = new myasynctask(); 
      MAT.execute(); 
     } 


     private class myasynctask extends AsyncTask<Void, Integer, String> 
     { 

      @Override 
      protected void onPreExecute() 
      { 

      } 

      @Override 
      protected void onPostExecute(String result) 
      { 
       TextView tv= (TextView)findViewById(R.id.heloo); 
       tv.setText(he); 


      } 

      @Override 
      protected String doInBackground(Void... params) 

      { 
       try 
       { 

        // Soap Call 

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
        request.addProperty("value", "1"); 


        envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        envelope.dotNet = true; 
        envelope.setOutputSoapObject(request); 
        HttpTransportSE ht = new HttpTransportSE(URL); 


        ht.call(SOAP_ACTION, envelope); 
        Log.i("res......", fulatcode.toString()); 

       } 
       catch (SoapFault fault) 
       { 
        Log.v("TAG", "soapfault = "+fault.toString()); 



        String strFault = ((SoapFault) envelope.bodyIn).faultstring; 
        String strfalutcode =((SoapFault)envelope.bodyIn).faultcode; 
        String strfaultactor =((SoapFault)envelope.bodyIn).faultactor; 
        String strmessage = ((SoapFault)envelope.bodyIn).getMessage(); 

        String a= String.valueOf(strmessage); 
        Log.v("TAG", "Message:"+a); 
        Log.v("TAG", "Code:"+strfalutcode.toString()+"String:"+strFault.toString()); 



        he="Code:"+strfalutcode.toString()+"String:"+strFault.toString() ; 
       } 

       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 

       return null;  

      } 

     } 
    } 

Вот мое мыло ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header /> 
    <s:Body> 
    <s:Fault> 
     <faultcode>s:2</faultcode> 
     <faultstring xml:lang="en-US">sdajkgfuio</faultstring> 
     <detail> 
     <custom_fault xmlns="http://schemas.datacontract.org/2004/07/testing_fault" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
      <error_code1>2</error_code1> 
      <error_code2>3</error_code2> 
      <error_message1>There is no employee exist with the emp id</error_message1> 
      <error_message2>password is empty</error_message2> 
     </custom_fault> 
     </detail> 
    </s:Fault> 
    </s:Body> 
</s:Envelope> 

вот мой LogCat Быстродействие:

12-04 11:54:43.839: V/TAG(1154): soapfault = SoapFault - faultcode: 's:2' faultstring: 'sdajkgfuio' faultactor: 'null' detail: [email protected] 
12-04 11:54:43.839: V/TAG(1154): Message:sdajkgfuio 
12-04 11:54:43.839: V/TAG(1154): Code:s:2String:sdajkgfuio 
+0

Я думаю, что это поможет вам http://stackoverflow.com/questions/19075731/parse-data-from- soap-response-in-android –

+0

@ user3001037 да, я делаю то же самое, но это с soapobject responce не с soapfault. как разобрать soapfault? – parthpatibandha

+0

у кого-нибудь есть идея ????? – parthpatibandha

ответ

0

Попробуйте SoapObject tabResult = (SoapObject) tabResponse .getProperty (0);

если не работал, чем попробовать этот

for(int i=0;i<elementData.getPropertyCount();i++) 
      { 
       SoapObject getAllData = (SoapObject) elementData.getProperty(i); 
       if (getAllData instanceof SoapObject) { 
        String data= getAllData.getProperty({property_name}).toString(); 

       } 
      } 

     } 
     else 
     { 
      Log.i("No Response","error"); 
      return null; 
     } 

и Исследуйте это один http://seesharpgears.blogspot.in/2010/10/ksoap-android-web-service-tutorial-with.html

Я получил главную проблему

вы получаете ошибки броска редактировать свой вопрос

«Как разобрать« деталь »узла объекта мыла с использованием ksoap api« try manua л разбор делать то, используя .getproperties()

и увидеть больше http://docs.oracle.com/cd/E19159-01/819-3669/bnbin/index.html

+0

спасибо за отзыв ... Я не могу это сделать, потому что я хочу иметь дело с объектом soapfault не с soapobject responce. Я не могу выполнить stringname.getproperty («name») с soapfault. – parthpatibandha

+0

Вы получаете некоторую ошибку сериализации? (например, исключения исключения) – Konark

+0

Да, когда я добавляю вашу концепцию, как в то время, я сталкиваюсь с этой ошибкой: 12-04 11: 39: 10.469: V/TAG (1103): java.lang.ClassCastException: org.ksoap2.SoapFault не может быть передан в org.ksoap2.serialization.SoapObject SoapObject header = (SoapObject) response.getProperty («Заголовок»); – parthpatibandha