在Java客户端中使用来自C#的webmethods

时间:2015-05-04 10:34:50

标签: java c# web-services

我有一个C#webservice,C#-client可以访问。我希望创建一个可以从同一Webservice接收数据的java客户端。 Webservice有一个数据访问层,用于从外部数据库收集信息。我的问题是C#-webservice返回类型与java-client不兼容。下面是我的示例代码:

    public DataTable EmployeeNames()
    {
        Connect();
        DataSet dataset = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand("SELECT [First Name], [Last Name] FROM [dbo].[CRONUS Sverige AB$Employee]", con);

        adapter.Fill(dataset);

        DataTable datatable = dataset.Tables[0];

        Close();
        return datatable;
    }

正如您所看到的,这个webmethod返回一个DataTable,根据我的理解,Java无法处理。 DataSet也是如此。我已经尝试将数据转换为List / Array等,但后来我遇到了列的问题(例如我如何处理列名?)。我在这里没有选择,感谢任何帮助。

P.S。 C#客户端运行良好。

2 个答案:

答案 0 :(得分:2)

你说过你曾尝试将数据转换为列表或数组,因此我假设您可以更改方法签名。

您可以做的是返回Collection EmployeeEmployee个对象。 EmployeeNames()对象将包围您在数据库中的一些数据,并在DataSet方法中执行所需的翻译。

这应该使Java更容易阅读,因为Java具有集合的概念,或者可能是可迭代的。

根据您的评论,您可以尝试将function init() { setTimeout(init, 5000); // do sthg } 转换为JSON对象,如图所示here

作为一个FYI,您不需要公开所有字段,只需要显示您想要的字段。

答案 1 :(得分:0)

您可以从任何地方拨打网络服务。无论是来自C#,Java还是其他任何地方。问题是您如何公开您的Web服务。我建议将它作为REST服务公开,这样就可以从任何地方访问它。 Web上有大量关于如何实现RESTful服务的信息。一旦实现了REST服务,就可以使用您选择的环境中的HTTP GET,PUT,UPDATE,ETC等来访问它。