c# – 调用WCF引用类型变量
发布时间:2020-12-15 21:20:42 所属栏目:百科 来源:网络整理
导读:我对C#完全不熟悉. 我有一种服务方法 //actual method public DataTable LoadDownLoadTablesData(string strBusinessUnit,string strExecutive,string strTableName,ref string strDate,string strTerritoryCode,string strUField1,string strUField2,string
|
我对C#完全不熟悉.
我有一种服务方法 //actual method
public DataTable LoadDownLoadTablesData(string strBusinessUnit,string strExecutive,string strTableName,ref string strDate,string strTerritoryCode,string strUField1,string strUField2,string strUFeild3)
{
DataTable ds = new DataTable();
try
{
XontPDAServiceDAL vu = new XontPDAServiceDAL();
if (vu.validateExecutive(strBusinessUnit,strExecutive) == true)
{
DownloadFetchBLL wmd = new DownloadFetchBLL();
strDate = DateTime.Now.ToString();
ds = wmd.LoadDownLoadTableData(strBusinessUnit,strExecutive,strTableName,strTerritoryCode,strUField1,strUField2,strUFeild3);
}
else
{
throw new FaultException("Executive Not Active in the system.");
}
}
catch (FaultException) { }
catch (Exception ex)
{
throw new FaultException("Database Server is Not Responding." + ex.Message);
}
return ds;
}
//Converting datatable to String type
public string LoadDownLoadTablesDataJson(string strBusinessUnit,string strUFeild3)
{
DataTable dtDownloadJson = new DataTable();
dtDownloadJson = this.LoadDownLoadTablesData(strBusinessUnit,ref strDate,strUFeild3);
return this.ConverTableToJson(dtDownloadJson);
}
//Converting table to json
public String ConverTableToJson(DataTable dtDownloadJson)
{
string[] StrDc = new string[dtDownloadJson.Columns.Count];
string HeadStr = string.Empty;
// if (dtDownloadJson.Columns.Count > 0)
// {
for (int i = 0; i < dtDownloadJson.Columns.Count; i++)
{
StrDc[i] = dtDownloadJson.Columns[i].Caption;
HeadStr += """ + StrDc[i] + "" : "" + StrDc[i] + i.ToString() + "?" + "",";
}
if (HeadStr.Length > 0)
{
HeadStr = HeadStr.Substring(0,HeadStr.Length - 1);
StringBuilder Sb = new StringBuilder();
Sb.Append("{"" + dtDownloadJson.TableName + "" : [");
for (int i = 0; i < dtDownloadJson.Rows.Count; i++)
{
string TempStr = HeadStr;
Sb.Append("{");
for (int j = 0; j < dtDownloadJson.Columns.Count; j++)
{
TempStr = TempStr.Replace(dtDownloadJson.Columns[j] + j.ToString() + "?",dtDownloadJson.Rows[i][j].ToString());
}
Sb.Append(TempStr + "},");
}
Sb = new StringBuilder(Sb.ToString().Substring(0,Sb.ToString().Length - 1));
Sb.Append("]}");
return Sb.ToString();
}else
{
return "0";
}
// }else{
// return "0";
// }
}
这个LoadDownLoadTablesData()引用变量就在那里. 我必须从Android调用此LoadDownLoadTablesDataJson(….), 我这样打电话; // ksoap2 calling wcf
public SoapPrimitive soapPrimitiveData(String method_name1,String soap_action1,String NAMESPACE,String APPURL,String tablename ) throws IOException,XmlPullParserException {
SoapPrimitive responses = null;
SoapObject request = new SoapObject(NAMESPACE,method_name1); // set up
request.addProperty("strBusinessUnit","HEMA");
request.addProperty("strExec","4515");
request.addProperty("strTableName","RD.AlternativeProductHeader");
// after login we will get these fields value
request.addProperty("strDate","2000-04-29");
request.addProperty("TerritoryCode","KAND");
request.addProperty("strUField1","");
request.addProperty("strUField2","");
request.addProperty("strUField3","");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap// envelope
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTransport = new AndroidHttpTransport(APPURL);
httpTransport.debug = true;
try {
httpTransport.call(soap_action1,envelope);
responses = (SoapPrimitive) envelope.getResponse();
Log.w("log_tag","@@@@ 218 @@@@" + responses);
} catch (Exception e) {
e.printStackTrace();
}
return responses;
}
这总是返回“0”.但是当我通过虚拟测试C#site时,它会返回一些结果. String da1 = "2000-04-29";
String s = client.LoadDownLoadTablesDataJson("HEMA","4515","RD.AlternativeProductHeader",ref da1,"KAND","","");
Label1.Text = s;
输出是: {"Table1" : [{"TableName" : "LoadDistributor","Description" : "Distributor ","MandatoryFlag" : "1","Status" : "","Priority" : "0"},{"TableName" : "LoadPrice","Description" : "Price ","Priority" : "0"}]}
我混淆了我们想要如何使用Android传递引用类型? 请帮我.. 提前致谢. 解决方法
应该有这样的request.addProperty(“strExecutive”,“4515”);
不是request.addProperty(“strExe”,“4515”); 我应该是服务参数名称.不能给出不同的名字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
