加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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”);

我应该是服务参数名称.不能给出不同的名字

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读