Web服务响应失败Soap 2

时间:2012-07-14 18:47:54

标签: android asp.net android-ksoap2

package bt.Mobile.abc;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class HelloAndroidActivity extends Activity {
    private static final String APP_TAG = "BT Android";

    // TO VALIDATE THE LOGIN
    private static final String SOAP_ACTION = "http://SmartApp.boothtracker.com/ValidateLogin";
    private static final String METHOD_NAME = "ValidateLogin";
    private static final String NAMESPACE = "*****.com/";
    private static final String URL = "*****.asmx";

    TextView tvUserName;
    TextView tvPassword;
    TextView tvStatus;
    ProgressBar progressBar1;

    /** SelectedBooth used to store the Selected Booths **/
    public String SelectedBooth;

    public String getSelectedBooth() {
        return SelectedBooth;
    }

    public void setSelectedBooth(String SelectedBooth) {
        this.SelectedBooth = SelectedBooth;
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState);

        new eula.OnEulaAgreedTo() {

            public void onEulaAgreedTo() {
                // TODO Auto-generated method stub

            }
        };

        // VALIDATE USER LOGIN
        try
        {
            setContentView(R.layout.main);

            // INITIALIZE CONTROLS USED IN FORM
            tvUserName=(TextView)findViewById(R.id.editText1);
            tvPassword=(TextView)findViewById(R.id.editText2);
            tvStatus=(TextView)findViewById(R.id.txtStatus);

            progressBar1 = (ProgressBar)findViewById(R.id.progressBar1);
            progressBar1.setVisibility(View.GONE);

            Button b = (Button)findViewById(R.id.btnSignIn);            
            b.setOnClickListener(new View.OnClickListener(){
                public void onClick(View arg0){ 

                    progressBar1.setVisibility(View.VISIBLE);
                    tvStatus.setText("Processing...");

                    try {
                        // INVOKE THE WS TO GET THE LOGIN VALIDATED 
                        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);                       
                        request.addProperty("UserName", tvUserName.getText().toString());`enter code here`
                        request.addProperty("Password", tvPassword.getText().toString());                   
                        Toast.makeText(getApplicationContext(), ("Connecting"), Toast.LENGTH_LONG).show();
                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);                     
                        envelope.dotNet=true;
                        envelope.setOutputSoapObject(request);
                        Toast.makeText(getApplicationContext(), (URL), Toast.LENGTH_LONG).show();
                        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                        androidHttpTransport.call(SOAP_ACTION, envelope);                   
                        Toast.makeText(getApplicationContext(), ("Sending"), Toast.LENGTH_LONG).show();
                        Object result = (Object)envelope.getResponse();

                        String strResult = result.toString();

                        progressBar1.setVisibility(View.GONE);

                        if  (strResult.equals("True"))
                        {
                            //LOGIN WAS SUCESSFULL - PROCED TO NEXT PAGE
                            tvStatus.setText("Login Successfull, Please Wait...");
                            tvPassword.setText("");
                            Intent i = new Intent(HelloAndroidActivity.this, newfile.class);
                            startActivity(i);
                            finish();
                        }
                        else
                        {
                            // LOGIN FAILED TO AUTHENTICATE
                            Toast.makeText(getApplicationContext(), ("Invalid Username and Password"), Toast.LENGTH_LONG).show();
                            tvStatus.setText("Invalid username & password");
                            tvPassword.setText("");
                        }

                    } catch (Exception e) {
                        // LOGIN FAILED; NOTIFY THE USER AND WAIT
                        Toast.makeText(getApplicationContext(), (e.getMessage()), Toast.LENGTH_LONG).show();
                        tvStatus.setText("Connection Failure");
                        tvStatus.setText(e.getMessage());
                        tvPassword.setText("");
                    }
                }
            });
        }
        catch (Exception e)
        {
            Log.e(APP_TAG, Log.getStackTraceString(e));
        }
    }
}

我是Android新手,我创建了一个小应用程序并调用了一个Web方法。它总是正常工作,但突然停止工作,它没有连接到WS。我正在使用KSOAP2。我可以通过浏览器访问WS。我没有对代码进行任何更改。在交付时它工作正常,它停止运行。

Version- GingerBread,使用Eclipse,WS是asmx。我正在使用带有2.6.5 jar的KOSAP2 ..请帮助我非常关键

1 个答案:

答案 0 :(得分:0)

而不是

 Object result = (Object)envelope.getResponse();

尝试使用

 SoapPrimitive result = (SoapPrimitive) envelope.getResponse();