2012-11-15 2 views
0

ksoap를 사용하여 실시간 데이터로 환율 계산기를 만들고 웹 서비스에 액세스합니다. 그러나 webservice에서 오는 응답은 org.ksoap2.SoapFault입니다. 그러나이 응답은 예외로 throw되지 않습니다. 이 대답은 내 텍스트 영역에서 내 코드에서 무엇이 잘못 되었습니까? , SOAP를 사용하는 Android 액세스 웹 서비스

AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL); 
try { 
    httpTransport.call(SOAP_ACTION, envelope); 
    System.out.println("2!!!!!!!!!!!!!!!!"); 
    SoapObject result = (SoapObject)envelope.bodyIn; 
    System.out.println("1!!!!!!!!!!!!!!!!"); 
    input.setText(result.getProperty(0).toString()); 
} catch (Exception e) { 
    input.setText(e.getMessage()); 
} 

이와 위의 부품을 교체하십시오,

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
androidHttpTransport.call(SOAP_ACTION, envelope); 
Object result = envelope.getResponse(); 
System.out.println(result.toString()); 

이 당신의 코드에서

package com.example.deneme; 

    import org.ksoap2.SoapEnvelope; 
    import org.ksoap2.serialization.PropertyInfo; 
    import org.ksoap2.serialization.SoapObject; 
    import org.ksoap2.serialization.SoapPrimitive; 
    import org.ksoap2.serialization.SoapSerializationEnvelope; 
    import org.ksoap2.transport.AndroidHttpTransport; 
    import org.ksoap2.transport.HttpTransportSE; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 


     TextView input; 
     TextView output; 
     Button convert; 

     private static final String NAMESPACE = "http://www.webserviceX.NET/"; 

     private static String URL = "http://www.webserviceX.NET/CurrencyConvertor.asmx"; 
     private static final String METHOD_NAME = "ConversionRate"; 
     private static final String SOAP_ACTION = "http://www.webserviceX.NET/ConversionRate"; 

    // Yararlanacağımız web servisin yerini belirtiyoruz. 
     /* 
     final static String NAMESPACE = "http://tempuri.org/"; 
     // Web servis üzerinde hangi metodu kullanacağımızı ayarlıyoruz. 
     final static String METHOD_NAME = "CelsiusToFahrenheit"; 
     // SOAP_ACTION : NAMESPACE ve METHOD_NAME birleşiminden oluşuyor. 
     final static String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; 
     // Son olarak Web servise ait URL tanımlamasını burada yapıyoruz. 
     final static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx"; 
     */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

     input=(EditText)findViewById(R.id.editText1); 
     convert=(Button)findViewById(R.id.convertt); 
     convert.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

       /* 
        PropertyInfo propInfo=new PropertyInfo(); 
        propInfo.name="FromCurrency"; 
        propInfo.type=PropertyInfo.STRING_CLASS; 
        propInfo.setValue("GBP"); 


        PropertyInfo propInfo2 = new PropertyInfo(); 
        propInfo2.name="ToCurrency"; 
        propInfo2.type = PropertyInfo.STRING_CLASS; 
        propInfo2.setValue("EUR"); 
      */ 
       // request.addProperty(propInfo); 
        //request.addProperty(propInfo2); 
       request.addProperty("FromCurrency","GBP"); 
       request.addProperty("ToCurrency","AFA"); 

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

        envelope.setOutputSoapObject(request); 
        envelope.dotNet=true; 

        AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL); 

        try { 
         httpTransport.call(SOAP_ACTION, envelope); 
        System.out.println("2!!!!!!!!!!!!!!!!"); 
        SoapObject result = (SoapObject)envelope.bodyIn; 


        System.out.println("1!!!!!!!!!!!!!!!!"); 


        input.setText(result.getProperty(0).toString()); 



        } catch (Exception e) { 
         input.setText(e.getMessage()); 

        } 
      } 
     }); 

     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
     } 
    }][1] 


    [1]: http://i.stack.imgur.com/QtUoD.png 
+0

예외 스택 추적을 게시 할 수 있습니까? – katzoft

+0

예외 없음이 그림에서 서버의 응답입니다. –

+0

http://i.stack.imgur.com/QtUoD.png –

답변