Как позвонить в локальный веб-сервис из мобильного приложения Android

В последние несколько дней я работал над кодом Android для вызова локального веб-сервиса. Я использую библиотеки ksoap для Android, чтобы вызвать мой веб-сервис SOAP, созданный в .NET. Однако я чувствую, что в моем коде что-то не так, поскольку ответ, который я получаю, когда я вызываю веб-сервис из моего приложения, попадает в блок catch. Я попытался отладить свой код Android, но все еще не могу решить свою проблему. Пожалуйста, может кто-нибудь сказать мне, что не так или любой другой более простой способ сделать это?

Вот мой код Android, который я реализовал до сих пор:

      package com.demo;
      import java.net.SocketException;
      import org.ksoap2.SoapEnvelope;
      import org.ksoap2.serialization.SoapObject;
      import org.ksoap2.serialization.SoapPrimitive;
      import org.ksoap2.serialization.SoapSerializationEnvelope;
      import org.ksoap2.transport.AndroidHttpTransport;
      import android.app.Activity;
      import android.app.ProgressDialog;
      import android.os.AsyncTask;
      import android.os.Bundle;
      import android.util.Log;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.Button;
      import android.widget.EditText;

    public class Login extends Activity {
private static final String SOAP_ACTION = "http://tempuri.org/GetLoginDetails";
    private static final String METHOD_NAME = "GetLoginDetails";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://10.0.2.2/testlogin/Service1.asmx";

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button signin = (Button) findViewById(R.id.regsubmitbtn);

        signin.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {


                        EditText etxt_user = (EditText) findViewById(R.id.usereditlog);
                        user_id = etxt_user.getText().toString();
                        EditText etxt_password = (EditText) findViewById(R.id.pwdeditlog);
                        password = etxt_password.getText().toString();

                        new LoginTask().execute();
                }
        });
}

 String user_id;
String password;
String auth=null;
private class LoginTask extends AsyncTask<Void, Void, Void> {

    private final ProgressDialog dialog = new ProgressDialog(
                    Login.this);

    protected void onPreExecute() {
            this.dialog.setMessage("Logging in...");
            this.dialog.show();
    }

    protected Void doInBackground(final Void... unused) {

             auth = doLogin("lalit", "lalit");
            return null; // don't interact with the ui!
    }

    protected void onPostExecute(Void result) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }

         }


       private String doLogin(String user_id, String password) {

    SoapPrimitive resultstring = null;
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("user", user_id);
    request.addProperty("password", password);
    SoapSerializationEnvelope soapenvelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
    soapenvelope.dotNet = true;                                                      
    soapenvelope.setOutputSoapObject(request);

    AndroidHttpTransport httptransport = new AndroidHttpTransport(URL);
    httptransport.debug = true;

    try {
            httptransport.call(SOAP_ACTION, soapenvelope);
            resultstring = (SoapPrimitive) soapenvelope.getResponse();
            //Log.d("Authenticaion", resultstring+"");
            System.out.println(resultstring);


    }
    catch (SocketException ex) {
        Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
        ex.printStackTrace();
    } catch (Exception e) {
        Log.e("Error : " , "Error on soapPrimitiveData() " + e.getMessage());
       e.printStackTrace();
    }
    return resultstring+"";

    }
     }
    }

код моего веб-сервиса:

        using System;
        using System.Collections;
        using System.ComponentModel;
        using System.Data;
        using System.Linq;
        using System.Web;
        using System.Web.Services;
        using System.Web.Services.Protocols;
        using System.Xml.Linq;
        using System.Data.SqlClient;

     namespace LoginDetails
     {
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
// [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
   {


    [WebMethod]
  public String GetLoginDetails(string UserName, string Password)
    {

   try
      { 
     using (SqlConnection myConnection = new SqlConnection(@"Data Source= .\SQLEXPRESS;Initial Catalog=student;User ID=sa;Password=demo"))
    {
        myConnection.Open();

        using (SqlCommand myCommand = new SqlCommand())
        {
            myCommand.Connection = myConnection;
            myCommand.CommandText = "SELECT COUNT(*) FROM Login WHERE UserName = @UserName AND Password = @Password";
            myCommand.Parameters.Add("@UserName", SqlDbType.VarChar).Value = UserName;
            myCommand.Parameters.Add("@Password", SqlDbType.VarChar).Value = Password;
            return (int)myCommand.ExecuteScalar() == 1 ? "success" : "bad username or password";
        }
    }
}
catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    return "an error occurred.";
     } 

  }

     }


  }

мой logcat:

       10-22 21:49:17.635: DEBUG/dalvikvm(117): GC_EXTERNAL_ALLOC freed 901 objects /         

       10-22 21:49:18.015: WARN/KeyCharacterMap(117): No keyboard for id 0
       10-22 21:49:18.015: WARN/KeyCharacterMap(117): Using default keymap:  /system/usr/keychars/qwerty.kcm.bin
       10-22 21:49:22.275: INFO/ARMAssembler(58): generated s   scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x23df98:0x23e054] in 675711 ns
       10-22 21:49:42.025: INFO/System.out(274): an error occurred.
       10-22 21:49:42.045: WARN/InputManagerService(58): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44eda178

Ответы на вопрос(2)

Ваш ответ на вопрос