我有一个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]);
}
}
答案 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"
}