处理来自webservice的数组

时间:2011-08-03 13:20:40

标签: c# arrays web-services

我有一个webservice,它返回一个Arrays / jagged数组。

我在本地C#windows窗体应用程序中遇到问题。

最初,它给了我内容类型错误。现在使用样本波纹管代码,它返回一个空数组。

我也尝试返回一维数组但结果是一样的。

WebService Side:

    [WebMethod]
    public string[] teste()
    {
        string[] a = new string[1] { "one" };
        string[] b = new string[1] { "two" };
        string[][] c = { a, b };

        return c;
    }

当地方:

class open_notes
{
    public static ServiceReference1.Smart_Stick_ServiceSoapClient web_service = new ServiceReference1.Smart_Stick_ServiceSoapClient();

    public static void open()
    {
        string[][] a = null;
        a [0][0] = web_service.teste().ToString();
        MessageBox.Show(a[0][0]);
    }
}

3 个答案:

答案 0 :(得分:1)

你的函数返回一个字符串数组(与一个字符串数组相对),你在结果数组上调用ToString()。

答案 1 :(得分:1)

您的网络服务的返回类型不是string[][],您不应该在网络服务调用的结果上调用.ToString(),而在设置{时,您正在访问空引用{1}}然后尝试索引到string[][] a = null。只需将变量设置为Web服务调用的结果

即可
a[0][0]

答案 2 :(得分:-1)

感谢帮助人员

但最后我认为在Web服务中创建一个结构更好。

但你不能忘记,在客户端再次创建结构,你需要实例化它,引用Web服务。

服务器端:

public struct ClientData

{
   public string descricao;
   public string timer;
}

[WebMethod]
    public ClientData[] teste()
    {
        ClientData[] Clients = null;
        Clients = new ClientData[30];

        Clients[0].descricao = "oi";
        Clients[0].timer = "legal";


        return Clients;
    }

客户端:

public static void receive_teste()
    {

        WindowsFormsApplication1.ServiceReference1.ClientData[] Clients = null;
        Clients = new WindowsFormsApplication1.ServiceReference1.ClientData[30];

        Clients = (WindowsFormsApplication1.ServiceReference1.ClientData[])web_service.teste();

        MessageBox.Show(Clients[0].descricao.ToString()); // Shows returned "descricao"
        MessageBox.Show(Clients[0].timer.ToString()); // Shows returned "timer"

    }