Llame a la variable de tipo de referencia WCF
Soy totalmente nuevo a C #. Tengo un método de servicio
//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"; // } }
Esta variable de referencia LoadDownLoadTablesData () está allí.
- Recomendaciones para el formato / protocolo de .NET Web Service para Android, iPhone, etc.
- Obtención de imagen de la matriz de bytes en el objeto JSON a la aplicación de Android
- No se puede conectar al servicio WCF en Android
- Error de acceso denegado con jQuery
- Publicar un servicio JSONArray en WCF desde android
Tengo que pasar la llamada de este LoadDownLoadTablesDataJson (….) de Android,
Llamé así;
// 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; }
Esto siempre devuelve "0". Pero cuando corro a través de la prueba simulada C # sitio, devolver algún resultado. Ver
String da1 = "2000-04-29"; String s = client.LoadDownLoadTablesDataJson("HEMA", "4515", "RD.AlternativeProductHeader", ref da1, "KAND", "", "", ""); Label1.Text = s;
Salida es:
{"Table1" : [{"TableName" : "LoadDistributor","Description" : "Distributor ","MandatoryFlag" : "1","Status" : "","Priority" : "0"},{"TableName" : "LoadPrice","Description" : "Price ","MandatoryFlag" : "1","Status" : "","Priority" : "0"}]}
Tengo confundir cómo queremos pasar tipo de referencia con Android?
Por favor, ayúdame..
Gracias por adelantado.
- Android con servicio web de WCF usando ksoap2 - error SoapFault - código de error: 'a: ActionNotSupported'
- ¿Cómo hacer SSO basada en reclamaciones para aplicaciones Android e IPhone usando ADFS STS?
- Diferentes formas de publicar valores json en Server
- Aplicación de Android que se conecta a un servicio web - no funciona
- Saltos de línea con WCF, JSON y un cliente que no sea Windows
- Ksoap2 Android - ¿cómo especificar un espacio de nombres para las propiedades secundarias de un objeto complejo?
- Creación de una arquitectura cliente-servidor con estado en WCF
- Cómo enviar la cadena codificada base 64 de android a wcf
Debe tener dar como este request.addProperty("strExecutive", "4515");
No request.addProperty("strExe", "4515");
Yo shoube ser nombre de argumento de servicio.No puedo dar nombre diferente
Parece que el nombre de la propiedad en su solicitud andriod no coincide con el nombre del parámetro en su método de servicio web .NET: strExe! = StrExecutive.
- ¿Cómo obtener orientación inicial para los cálculos con giroscopio?
- Recibir y decodificar H.264 en vivo en Android