Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android调用WCF服务,返回DataTable_Android_Wcf - Fatal编程技术网

Android调用WCF服务,返回DataTable

Android调用WCF服务,返回DataTable,android,wcf,Android,Wcf,如何在android>My service return dataTable中处理数据表,如何处理 public static final String APPURL = "http://192.168.1.213:6969/MySalesServices"; private static final String METHOD_NAME = "SalesList"; private static final String NAMESPACE = "http://tempuri.org/

如何在android>My service return dataTable中处理数据表,如何处理

public static final String APPURL = "http://192.168.1.213:6969/MySalesServices";    
private static final String METHOD_NAME = "SalesList";
private static final String NAMESPACE = "http://tempuri.org/"; 
private static String SOAP_ACTION = "http://tempuri.org/IMySalesServices/SalesList";

 SoapPrimitive responsePrimitive = null;
ArrayList<String> tablesName = new ArrayList<String>();
 public void onCreate(Bundle savedInstanceState) {
      ..................

  }

  public SoapPrimitive soapPrimitive(String METHOD_NAME, String SOAP_ACTION,String NAMESPACE, String URL) throws IOException,   XmlPullParserException {
    SoapPrimitive responses = null;
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // set up
    request.addProperty("strExec", strExecutive);
    request.addProperty("strBusinessUnit", strBusinessUnit);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
    httpTransport.debug = true;

    try {
        httpTransport.call(SOAP_ACTION, envelope);
        responses = (SoapPrimitive) envelope.getResponse();

        }catch(SocketException ex){
            ex.printStackTrace();
        } catch (Exception e) {
           e.printStackTrace();
        }

    return responses;
}

请帮帮我,你得到的错误根本不是错误。至少,这是我在自己的应用程序中看到的行为,使用的设置与您的设置非常相似。您是否尝试过对SoapObject强制转换响应?然后,您可以调用该SoapObject上的
.getPropertyCount()
方法,开始在响应内容中循环。快速示例:

//Create a Transport object makes the webservice call
HttpTransportSE httpTrans = new HttpTransportSE(URL);
httpTrans.call(SOAP_ACTION, env);

//Cast the object to SoapObject
SoapObject storages = (SoapObject)env.getResponse();

//Loop trough the result
for(int i = 0; i < storages.getPropertyCount(); i++) {
    //Get a SoapObject for each storage
    SoapObject storage = (SoapObject)storages.getProperty(i);
}
//创建传输对象进行webservice调用
HttpTransportSE httpTrans=新的HttpTransportSE(URL);
httpTrans.call(SOAP_ACTION,env);
//将对象强制转换为SoapObject
SoapObject存储=(SoapObject)env.getResponse();
//在结果中循环
对于(int i=0;i

看到您得到的响应,您可能需要深入挖掘几层才能获得所需的数据。6或7层深。如果这是一个选项,我会更改您从Web服务获得的响应,以便更容易解析。

您将方法类型返回为String,并将其数据表协调为Json作为String,这是一个很好的方法&简单

  //Converting table to json
    public String ConverTableToJson(DataTable dtDownloadJson)
    {
        string[] StrDc = new string[dtDownloadJson.Columns.Count];
        string HeadStr = string.Empty;

        if (dtDownloadJson.Rows.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";
           }
    }
//将表转换为json
公共字符串ConverTableToJson(数据表dtDownloadJson)
{
string[]StrDc=新字符串[dtDownloadJson.Columns.Count];
string HeadStr=string.Empty;
如果(dtDownloadJson.Rows.Count>0)
{
for(int i=0;i0)
{
HeadStr=HeadStr.子字符串(0,HeadStr.长度-1);
StringBuilder Sb=新的StringBuilder();
Sb.追加(“{\”+dtDownloadJson.TableName+“\”:[”);
for(int i=0;i
您是否考虑过让您的服务返回一个JSON提要,并在Android应用程序中收到该提要时,将其反序列化到您的对象?谷歌的Gson库非常适合这样做。这也将是一个更轻的,这是对网络流量好谢谢。它的伟大的答案。我面对这个问题超过两天
  //Converting table to json
    public String ConverTableToJson(DataTable dtDownloadJson)
    {
        string[] StrDc = new string[dtDownloadJson.Columns.Count];
        string HeadStr = string.Empty;

        if (dtDownloadJson.Rows.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";
           }
    }