Android 为什么我的参数为空?

Android 为什么我的参数为空?,android,ksoap,Android,Ksoap,我的web服务方法 [WebMethod] public DataSet Musteriler(string @Sirket,string @User,string @filtre) { using (SqlConnection con = new SqlConnection(connstr)) { try { con.Open(); } catch (Exception)

我的web服务方法

 [WebMethod]
 public DataSet Musteriler(string @Sirket,string @User,string @filtre)
{

    using (SqlConnection con = new SqlConnection(connstr))
    {
        try
        {
            con.Open();
        }
        catch (Exception)
        {

        }
        SqlCommand km = con.CreateCommand();
        SqlDataAdapter da = new SqlDataAdapter(km);

        if (Sirket.Trim().Length == 0)
        {
            return null;
        }
        km.CommandText = "select SirketKodu,Versiyon from MV4.dbo.SIRKET with(nolock) where kod=@kod";
        km.Parameters.Clear();
        km.Parameters.AddWithValue("@kod", @Sirket);
        DataTable sdt = new DataTable();

        da.Fill(sdt);
        string sirketkodu = "master";
        if (sdt.Rows.Count>0)
        {
            sirketkodu = "DB_V" + sdt.Rows[0][1] + "_" + sdt.Rows[0][0];
        }
        km.Connection.ChangeDatabase(mikrosirketkodu);

        km.CommandText = "select cari_kod,cari_unvan1 from XXX with(nolock) where (kod like @kod or unvan1 like @kod or unvan2 like @kod or @kod='')";
        km.Parameters.Clear();
        km.Parameters.AddWithValue("@kod", @filtre.mysearch());
        DataSet ds = new DataSet();
        da.SelectCommand = km;
        da.Fill(ds);
        return ds;
    }
}
我的Android kSoap2代码

 public static String serverID ;//xxx=http
String URL = "";
final String METHOD_NAME = "Musteriler";
static String NAMESPACE = "xxxx://abc.com/Service.asmx/";
final String SOAP_ACTION = "xxxx://abc.com/Musteriler";    

 PropertyInfo property = new PropertyInfo();
        sendingString send = new sendingString(temizSirket, temizkullId, musFil);
        property.setName("Musteriler");
        property.setType(send.getClass());
        property.setValue(send);
        request.addProperty(property);

        SoapSerializationEnvelope envelope = new     SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = request;
        envelope.dotNet = true;
        envelope.encodingStyle = SoapSerializationEnvelope.ENC2003;
        envelope.xsd = SoapEnvelope.XSD;
        envelope.xsi = SoapEnvelope.XSI;
        envelope.implicitTypes = true;

        envelope.setOutputSoapObject(request);

        envelope.addMapping(NAMESPACE, send.getClass().getSimpleName(), sendingString.class);

        HttpTransportSE httpTransport = new HttpTransportSE("http://" + serverID); 

        httpTransport.debug = true;

        httpTransport.call(SOAP_ACTION, envelope);

        response = (SoapObject) envelope.getResponse();

        List<String> list = new ArrayList<String>();

        for (int i = 1; i < response.getPropertyCount(); i++) {
            if (response.getProperty(i).toString().trim() != null) {
                SoapObject newDataSet = (SoapObject) response.getProperty(i);
                SoapObject tablo  = (SoapObject) newDataSet.getProperty(0);
                SoapObject icerik = (SoapObject) tablo.getProperty(0);
                list.add("Kod:" + icerik.getProperty(0).toString() + "-CariUnvan:" + icerik.getProperty(1).toString());
            }else {
                list.add("");
            }               
        }
        musteriAdapter = new ArrayAdapter<String>(this , R.layout.list_spinner, list);
        musteri_sec.this.runOnUiThread(yeni);
    } catch (Exception e) { 
        String a = e.toString();
    }
}

Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {
        Call();
    }
});

Thread yeni = new Thread(new Runnable() {

    @Override
    public void run() {
        musteriSpinner = (Spinner) findViewById(R.id.spinnerMusteri);
        musteriSpinner.setAdapter(musteriAdapter);

    }
});

public class sendingString implements KvmSerializable {


    private String xSirket,xUser,xfiltre;

    public sendingString(String Sirket, String User, String filtre){
        super();
        this.xSirket = Sirket;
        this.xUser = User;
        this.xfiltre = filtre;

    }

    public String getSirket(){
        return xSirket;
    }
    public void setSirket(){
        this.xSirket= xSirket;
    }
    public String getUser(){
        return xUser;
    }
    public void setUser(){
        this.xUser= xUser;
    }
    public String getfiltre(){
        return xfiltre;
    }
    public void setfiltre(){
        this.xfiltre= xfiltre;
    }




    @Override
    public Object getProperty(int propertyNumber) {
        Object property = null;
        switch (propertyNumber) {
        case 0:
            property = this.xSirket;
            break;
        case 1:
            property = this.xUser;
            break;

        case 2:
            property = this.xfiltre;
            break;
        default:
            break;
        }
        return property;
    }

    @Override
    public int getPropertyCount() {
        // TODO Auto-generated method stub
        return 3;
    }

    @Override
    public void getPropertyInfo(int propertyNumber, Hashtable arg1, PropertyInfo propertyInfo) {
        switch (propertyNumber) {
        case 0:
            propertyInfo.type = PropertyInfo.STRING_CLASS;
            propertyInfo.name = "@Sirket";
            propertyInfo.setNamespace(NAMESPACE);
            break;
        case 1:
            propertyInfo.type = PropertyInfo.STRING_CLASS;
            propertyInfo.name = "@User";
            propertyInfo.setNamespace(NAMESPACE);
            break;
        case 2:
            propertyInfo.type = PropertyInfo.STRING_CLASS;
            propertyInfo.name = "@filtre";
            propertyInfo.setNamespace(NAMESPACE);

            break;

        default:
            break;
        }

    }

    @Override
    public void setProperty(int propertyNumber, Object data) {
        switch (propertyNumber) {
        case 0:
            this.xSirket = String.valueOf(data);
            break;
        case 1:
            this.xUser = String.valueOf(data);
            break;
        case 2:
            this.xfiltre = String.valueOf(data);
            break;

        default:
            break;
        }

    }

}

排队;SoapFault-faultcode:'soap:Server'faultstring:'服务器无法处理请求。-->字符串引用未设置为字符串的实例。 参数名称:s'faultactor:'null'详细信息:org.kxml2.kdom。Node@b4dfd350“我明白了

Web服务方法:

[WebMethod]
public bool SifreKontrol(string kod, string sifre)
{
    using (SqlConnection con = new SqlConnection(connstr))
    {
        try
        {
            con.Open();
        }
        catch (Exception)
        {

        }

        SqlCommand km = con.CreateCommand();
        km.CommandText ="select count(*) from MV4.dbo.USERS with (NOLOCK) where kod=@kod and isnull(pasif, 0)=0 and (pass=@pass)";
        km.Parameters.Clear();
        km.Parameters.AddWithValue("@kod", kod);
        km.Parameters.AddWithValue("@pass", sifreleme.Encrypt(sifre, true));

        if (km.ExecuteScalar().Tamsayi() > 0)
            return true;
        else return false; 
    }
}
请帮帮我…

我解决了这个问题:

[WebMethod]
     public bool SifreKontrol(Object kod, Object sifre)
      {
      using (SqlConnection con = new SqlConnection(connstr))
      {...}}
以及:


推荐给任何人。dot net 4.0及以上版本带有web服务的准备。非常方便。

请发布日志和错误日志,其中显示您提到的问题SOAPFault-faultcode:'soap:Server'faultstring:'服务器无法处理请求。-->参数化查询“(@kod nvarchar(4000))select SirketKodu,Versiyon from M M”需要未提供的参数“@kod”。'faultactor:'null'详细信息:org.kxml2.kdom。Node@b4d74e18My代码添加;请求。添加属性(属性);和错误日志;java.lang.IllegalArgumentException:大小
[WebMethod]
     public bool SifreKontrol(Object kod, Object sifre)
      {
      using (SqlConnection con = new SqlConnection(connstr))
      {...}}
PropertyInfo property2 = new PropertyInfo();
    property2.name = "sifre";
    property2.setName("sifre");
    property2.setNamespace(NAMESPACE);
    property2.setType(PropertyInfo.OBJECT_TYPE);
    property2.setValue(sifreText);
    request.addProperty(property2);