Android 为什么我的参数为空?
我的web服务方法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)
[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);