Android SOAP web服务返回错误响应

Android SOAP web服务返回错误响应,android,.net,sql-server,web-services,ksoap2,Android,.net,Sql Server,Web Services,Ksoap2,我正在使用localhost..我在.NET中创建了一个web服务,它接受用户名和密码并对用户进行身份验证..我的web服务代码是:http://pastebin.com/GQGtKSqq 我的日志猫显示:http://pastebin.com/czs5Fbc3 我的日志cat显示输出是来自web服务的catch语句的语句。它实际上应该在try块中显示语句,即“success”。。 当我从Android应用程序调用web服务时,我得到的响应与在浏览器中运行web服务时的响应不同。我在SQL数据库

我正在使用localhost..我在.NET中创建了一个web服务,它接受用户名和密码并对用户进行身份验证..我的web服务代码是:http://pastebin.com/GQGtKSqq 我的日志猫显示:http://pastebin.com/czs5Fbc3

我的日志cat显示输出是来自web服务的catch语句的语句。它实际上应该在try块中显示语句,即“success”。。 当我从Android应用程序调用web服务时,我得到的响应与在浏览器中运行web服务时的响应不同。我在SQL数据库中存储了用户名和密码。有人能帮我解决问题吗。我的android代码如下:

       package com.demo;

       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) {

                    String user_id;
                    String password;
                        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();
                }
             });
        }


      private class LoginTask extends AsyncTask<Void, Void, Void> {

        String auth = null;
         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("hello", "hello");
            return null; // don't interact with the ui!
    }

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


      private String doLogin(String user_id, String password) {

          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; // Set this variable to true for
          soapenvelope.setOutputSoapObject(request);

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

            return resultstring + "";

    } catch (Exception e) {
            e.printStackTrace();
    }
    return "";
         } 
     }
package.com.demo;
导入org.ksoap2.SoapEnvelope;
导入org.ksoap2.serialization.SoapObject;
导入org.ksoap2.serialization.SoapPrimitive;
导入org.ksoap2.serialization.SoapSerializationEnvelope;
导入org.ksoap2.transport.AndroidHttpTransport;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
公共类登录扩展活动{
私有静态最终字符串SOAP_ACTION=”http://tempuri.org/GetLoginDetails";
私有静态最终字符串方法\u NAME=“GetLoginDetails”;
私有静态最终字符串命名空间=”http://tempuri.org/";
私有静态最终字符串URL=”http://10.0.2.2/testlogin/Service1.asmx";
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮符号=(按钮)findViewById(R.id.regsubmitbtn);
signin.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
字符串用户标识;
字符串密码;
EditText etxt_user=(EditText)findviewbyd(R.id.usereditlog);
user_id=etxt_user.getText().toString();
EditText etxt_password=(EditText)findViewById(R.id.pwdeditlog);
password=etxt_password.getText().toString();
新登录任务().execute();
}
});
}
私有类LoginTask扩展异步任务{
字符串auth=null;
private final ProgressDialog dialog=新建ProgressDialog(
登录。这个);
受保护的void onPreExecute(){
this.dialog.setMessage(“登录…”);
this.dialog.show();
}
受保护的空位背景(最终空位…未使用){
auth=doLogin(“你好”,“你好”);
return null;//不与ui交互!
}
受保护的void onPostExecute(void结果){
if(this.dialog.isShowing()){
this.dialog.disclose();
}
System.out.println(auth);
}
}
私有字符串doLogin(字符串用户id、字符串密码){
SoapObject请求=新的SoapObject(名称空间、方法名称);
请求.addProperty(“用户”,用户id);
request.addProperty(“密码”,password);
SoapSerializationEnvelope soapenvelope=新的SoapSerializationEnvelope(
第11版);
soapenvelope.dotNet=true;//将此变量设置为true,以便
setOutputSoapObject(请求);
AndroidHttpTransport httptransport=新的AndroidHttpTransport(URL);
试一试{
调用(SOAP\u操作,soapenvelope);
SoapPrimitive结果字符串=(SoapPrimitive)soapenvelope
.getResponse();
Log.d(“身份验证”,resultstring+);
System.out.println(resultstring);
返回结果字符串+“”;
}捕获(例外e){
e、 printStackTrace();
}
返回“”;
} 
}

我喜欢这个

// ksoap2 calling wcf
public SoapPrimitive soapPrimitiveData(String tablename,String strBusinessUnit, String strExecutive, String strTerritoryCode,String strUField1) throws IOException,XmlPullParserException {
    SoapPrimitive responsesData = null;
    SoapObject requestData = new SoapObject(NAMESPACE, METHOD_TABLEDATA); // set

    Date date = new Date();
    DateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
    String strDate = formatter.format(date);

    requestData.addProperty("strBusinessUnit", strBusinessUnit);
    requestData.addProperty("strExecutive", strExecutive);
    requestData.addProperty("strTableName", tablename);
    requestData.addProperty("strDate", strDate);
    requestData.addProperty("strTerritoryCode", strTerritoryCode);
    requestData.addProperty("strUField1", strUField1);
    SoapSerializationEnvelope envelopes = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap//// envelope
    envelopes.dotNet = true;
    envelopes.setOutputSoapObject(requestData);
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(APPURL);
    httpTransport.debug = true;

    try {
        httpTransport.call(SOAP_ACTION1, envelopes);
        responsesData = (SoapPrimitive) envelopes.getResponse();


    } 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 responsesData;
}
您的代码是正确的

在“onpostexecute()中,您必须编写下一个活动调用部分

         @Override
    protected void onPostExecute(Void result) {

        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
        Toast.makeText(DownlaodTableActivity.this,"All The tables Downloaded Successfully",Toast.LENGTH_SHORT).show();


        if(comingFrom.equals("Success")){
            Intent i = new Intent(getBaseContext(), SettingScreenActivity.class);
            View vi = SettingActivityGroup.group.getLocalActivityManager().startActivity("SettingScreenActivity", i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
            SettingActivityGroup.group.replaceView(vi);


        }else{
            Intent showContent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(showContent);
        }
    }

我喜欢这个

// ksoap2 calling wcf
public SoapPrimitive soapPrimitiveData(String tablename,String strBusinessUnit, String strExecutive, String strTerritoryCode,String strUField1) throws IOException,XmlPullParserException {
    SoapPrimitive responsesData = null;
    SoapObject requestData = new SoapObject(NAMESPACE, METHOD_TABLEDATA); // set

    Date date = new Date();
    DateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
    String strDate = formatter.format(date);

    requestData.addProperty("strBusinessUnit", strBusinessUnit);
    requestData.addProperty("strExecutive", strExecutive);
    requestData.addProperty("strTableName", tablename);
    requestData.addProperty("strDate", strDate);
    requestData.addProperty("strTerritoryCode", strTerritoryCode);
    requestData.addProperty("strUField1", strUField1);
    SoapSerializationEnvelope envelopes = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap//// envelope
    envelopes.dotNet = true;
    envelopes.setOutputSoapObject(requestData);
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(APPURL);
    httpTransport.debug = true;

    try {
        httpTransport.call(SOAP_ACTION1, envelopes);
        responsesData = (SoapPrimitive) envelopes.getResponse();


    } 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 responsesData;
}
您的代码是正确的

在“onpostexecute()中,您必须编写下一个活动调用部分

         @Override
    protected void onPostExecute(Void result) {

        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
        Toast.makeText(DownlaodTableActivity.this,"All The tables Downloaded Successfully",Toast.LENGTH_SHORT).show();


        if(comingFrom.equals("Success")){
            Intent i = new Intent(getBaseContext(), SettingScreenActivity.class);
            View vi = SettingActivityGroup.group.getLocalActivityManager().startActivity("SettingScreenActivity", i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
            SettingActivityGroup.group.replaceView(vi);


        }else{
            Intent showContent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(showContent);
        }
    }