Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KSOAP2的SoapObject问题_Java_Android_Asp.net_List_Android Ksoap2 - Fatal编程技术网

Java KSOAP2的SoapObject问题

Java KSOAP2的SoapObject问题,java,android,asp.net,list,android-ksoap2,Java,Android,Asp.net,List,Android Ksoap2,好的,我正在尝试使用KSOAP2将一个列表对象从ASP传递到Android。我完全能够连接到Web服务,我已经测试过该服务确实会返回一个基本bool,但是我需要该服务返回一个充满登录变量的列表对象。我收到以下错误:soapPrimitiveData()org.ksoap2.SoapFault上的错误无法转换为org.ksoap2.serialization.SoapObject 爪哇: public class MainActivity extends ActionBarActivity { p

好的,我正在尝试使用KSOAP2将一个列表对象从ASP传递到Android。我完全能够连接到Web服务,我已经测试过该服务确实会返回一个基本bool,但是我需要该服务返回一个充满登录变量的列表对象。我收到以下错误:soapPrimitiveData()org.ksoap2.SoapFault上的错误无法转换为org.ksoap2.serialization.SoapObject

爪哇:

public class MainActivity extends ActionBarActivity {
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://www.mycompanysURL.net/CompanyService/ReportingService.asmx";

String user_id;
String password;

TextView text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button signin = (Button) findViewById(R.id.btnLogin);
    text = (TextView) findViewById(R.id.txtOut);
    signin.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {


            EditText etxt_user = (EditText) findViewById(R.id.txtUser);
            user_id = etxt_user.getText().toString();
            EditText etxt_password = (EditText) findViewById(R.id.txtPass);
            password = etxt_password.getText().toString();

            new LoginTask().execute();

        }
    });
}  

private boolean doLogin(String user_id, String password) {
    String ip = Utils.getIPAddress(true);

    boolean result = false;
    final String SOAP_ACTION = "http://tempuri.org/GetLogin";
    final String METHOD_NAME = "GetLogin";
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

    request.addProperty("User", user_id);
    request.addProperty("Pass", password);
    request.addProperty("ip",ip);

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

    // Make the soap call.
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);

        // Get the SoapResult from the envelope body.
        //Error seems to happen here.
        SoapObject resultRequestSOAP = (SoapObject) envelope.bodyIn;

        SoapObject root = (SoapObject) resultRequestSOAP.getProperty(0);
        SoapObject s_deals = (SoapObject) root.getProperty("FOO_DEALS");

        for (int i = 0; i < s_deals.getPropertyCount(); i++)
        {
            Object property = s_deals.getProperty(i);
            if (property instanceof SoapObject)
            {
                SoapObject category_list = (SoapObject) property;
                String LoginID = category_list.getProperty("Login_ID").toString();
                String UserID = category_list.getProperty("UserID").toString();
                String Login_Access = category_list.getProperty("Login_Access").toString();
                String Login_CompID = category_list.getProperty("Login_CompID").toString();
                String Login_ProfileID = category_list.getProperty("Login_ProfileID").toString();
                String Login_DisplayName = category_list.getProperty("Login_DisplayName").toString();
                String Login_CustomerType = category_list.getProperty("Login_CustomerType").toString();
                String active = category_list.getProperty("active").toString();

                if (active == "1") {
                    result = true;
                    text.setText("Logged In");
                } else {

                    text.setText("Not Logged In");
                }
            }
        }
    } 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 result;

}


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

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

    protected void onPreExecute() {

        this.dialog.setMessage("Logging in...");
        this.dialog.show();

    }


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

        boolean auth = doLogin(user_id, password);
        System.out.println(auth);

        return null;
    }


    protected void onPostExecute(Void result) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
    }
}
}
公共类MainActivity扩展了ActionBarActivity{
私有最终字符串命名空间=”http://tempuri.org/";
私有最终字符串URL=”http://www.mycompanysURL.net/CompanyService/ReportingService.asmx";
字符串用户标识;
字符串密码;
文本查看文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮符号=(按钮)findViewById(R.id.btnLogin);
text=(TextView)findViewById(R.id.txtOut);
signin.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
EditText etxt_user=(EditText)findViewById(R.id.txtUser);
user_id=etxt_user.getText().toString();
EditText etxt_password=(EditText)findviewbyd(R.id.txtPass);
password=etxt_password.getText().toString();
新登录任务().execute();
}
});
}  
私有布尔doLogin(字符串用户id、字符串密码){
字符串ip=Utils.getIPAddress(true);
布尔结果=假;
最后一个字符串SOAP_ACTION=”http://tempuri.org/GetLogin";
最终字符串方法\u NAME=“GetLogin”;
SoapObject请求=新的SoapObject(名称空间、方法名称);
请求.addProperty(“用户”,用户id);
request.addProperty(“Pass”,密码);
请求。添加属性(“ip”,ip);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
//进行soap调用。
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
试一试{
调用(SOAP_操作,信封);
//从信封正文获取SoapResult。
//这里似乎发生了错误。
SoapObject resultRequestSOAP=(SoapObject)envelope.bodyIn;
SoapObject根=(SoapObject)resultRequestSOAP.getProperty(0);
SoapObject s_deals=(SoapObject)root.getProperty(“FOO_deals”);
对于(int i=0;i
ASP:

[WebMethod]
公共列表GetLogin(字符串用户、字符串传递、字符串ip)
{
SqlConnection conn=新的SqlConnection(my_db.credentials);
SqlDataReader rdr=null;
列表登录列表=新列表();
bool login\u in\u ok=false;
string date=DateTime.Now.ToString();
字符串UserID1=“”;
字符串Login_ID1=“”;
字符串Login_Access1=“”;
字符串Login_CompID1=“”;
字符串Login_ProfileID1=“”;
字符串Login_DisplayName1=“”;
字符串Login_CustomerType1=“”;
字符串active1=“”;
尝试
{
conn.Open();
SqlCommand cmd=新的SqlCommand(“usp\u用户\u登录”,conn);
cmd.Parameters.Add(新的SqlParameter(“@login”,User));
cmd.Parameters.Add(新的SqlParameter(“@pwd”,Pass));
cmd.Parameters.Add(新的SqlParameter(“@ip_addr”,ip));
cmd.Parameters.Add(新的SqlParameter(“@local_datetime”,date));
cmd.CommandType=CommandType.storedProcess;
rdr=cmd.ExecuteReader();
while(rdr.Read())
{                
UserID1=rdr[“UserID”].ToString();
Login_ID1=rdr[“ID”].ToString();
Login_Access1=rdr[“Access”].ToString();
Login_CompID1=rdr[“CompanyID”]。ToString();
Login_ProfileID1=rdr[“ProfileID”].ToString();
Login_DisplayName1=rdr[“Lname”].ToString()+“”+rdr[“FName”].ToString();
Login\u CustomerType1=rdr[“Login\u customer\u type”]。ToString()
 [WebMethod]
 public List<LoginObject> GetLogin(string User, string Pass, string ip)
 {
    SqlConnection conn = new SqlConnection(my_db.credentials);
    SqlDataReader rdr = null;
    List<LoginObject> LoginList = new List<LoginObject>();

    bool login_in_ok = false;

    string date = DateTime.Now.ToString();
    string UserID1 = "";
    string Login_ID1 = "";
    string Login_Access1 = "";
    string Login_CompID1 = "";
    string Login_ProfileID1 = "";
    string Login_DisplayName1 = "";
    string Login_CustomerType1 = "";
    string active1 = "";

    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("usp_user_login", conn);

        cmd.Parameters.Add(new SqlParameter("@login", User));
        cmd.Parameters.Add(new SqlParameter("@pwd", Pass));
        cmd.Parameters.Add(new SqlParameter("@ip_addr", ip));
        cmd.Parameters.Add(new SqlParameter("@local_datetime", date));

        cmd.CommandType = CommandType.StoredProcedure;

        rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {                
            UserID1 = rdr["UserID"].ToString();
            Login_ID1 = rdr["ID"].ToString();
            Login_Access1 = rdr["Access"].ToString();
            Login_CompID1 = rdr["CompanyID"].ToString();
            Login_ProfileID1 = rdr["ProfileID"].ToString();
            Login_DisplayName1 = rdr["Lname"].ToString() + " " + rdr["FName"].ToString();
            Login_CustomerType1 = rdr["login_customer_type"].ToString();
            active1 = rdr["Active"].ToString();                
        }           

    }
    finally
    {
        if (rdr != null)
        {
            rdr.Close();
        }

        if (conn != null)
        {
            conn.Close();
        }
    }          

    login_in_ok = active1 == "1" || active1 == "True" ? true : false;

    if (login_in_ok)
    {
        //Dataset for Andriod Login. 
        LoginList.Add(new LoginObject 
        { 
            Login_ID = Login_ID1, 
            UserID = UserID1, 
            Login_Access = Login_Access1,
            Login_CompID = Login_CompID1,
            Login_ProfileID = Login_ProfileID1,
            Login_DisplayName = Login_DisplayName1,
            Login_CustomerType = Login_CustomerType1,
            active = active1
        });
    }
    else
    {
        //Empty Set for Android to register
        LoginList.Add(new LoginObject
        {
            Login_ID = "",
            UserID = "",
            Login_Access = "0",
            Login_CompID = "",
            Login_ProfileID = "",
            Login_DisplayName = "",
            Login_CustomerType = "",
            active = active1
        });
    }

    return LoginList;
}