Call WCF Reference Type Variable

I am completely new to C #. I have one service method

//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 strExecutive, string strTableName, ref string strDate, string strTerritoryCode, string strUField1, string strUField2, string strUFeild3) { DataTable dtDownloadJson = new DataTable(); dtDownloadJson = this.LoadDownLoadTablesData(strBusinessUnit, strExecutive, strTableName, ref strDate, strTerritoryCode, strUField1, strUField2, 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"; // } } 

This reference variable LoadDownLoadTablesData () exists.

I need to pass a call to LoadDownLoadTablesDataJson (....) with Android,

I called it:

  // 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; } 

This always returns "0". But when I launch the dummy C # site, it returns some result. Cm

  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 ","MandatoryFlag" : "1","Status" : "","Priority" : "0"}]} 

I am confused how we want to pass a reference type using Android?

Please help me..

Thanks in advance.

+4
source share
2 answers

Should have given such a request.addProperty("strExecutive", "4515"); not request.addProperty("strExe", "4515");

I must be the name of a service argument. Do not specify a different name

+1
source

It looks like the property name in your andriod request does not match the parameter name in your .NET web service method: strExe! = StrExecutive.

0
source

All Articles