【问题标题】:Consuming WCF restful webservice with java client?使用 Java 客户端使用 WCF RESTful Web 服务?
【发布时间】:2014-09-25 06:37:28
【问题描述】:

我正在尝试为使用 WCF 和 NTLM 身份验证实现的 Restful Web 服务编写 Java 客户端。

我能够使用 Apache HTTPClient 库来连接和检索数据。

以下代码以 JSon 文本形式给出了响应。

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(new AuthScope(hostName, 443),    new NTCredentials(userName, password, hostName, domainName));
httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 150000);

HttpGet httpget = new HttpGet(url);
httpget.setHeader("Content-Type", "application/json");
HttpResponse response = httpclient.execute(httpget);
HttpEntity responseEntity = response.getEntity();
content = EntityUtils.toString(responseEntity);

现在我正在编写 JSon 解析器以将 JSon 文本转换为业务对象(手动创建的类)。

在我们使用 Axis/CXF 等框架使用基于 SOAP 的 Web 服务时,有谁知道如何自动化业务对象类创建和自动化响应解析器以将 Json 文本转换为 Java 对象?

【问题讨论】:

  • 您是在问是否已经存在将 JSon 文本直接解析为 Java 对象的解析器?或者您是否在寻求一种从服务的 WSDL 模式创建代理类的方法?如果服务同时公开 SOAP 和 REST 端点,您可以通过将 ?wsdl 附加到服务的 URL 来获取 WSDL。生成的 DTO 应该适用于 REST 和 SOAP 端点
  • 当调用 REST 调用时,我需要一个框架来生成基于服务和转换器的 DTO,从原始 JSon 文本到 DTO。 SOAP 服务未公开
  • 但是可以通过将?wsdl 附加到服务URL 来获得WSDL,例如http://host/service.svc?wsdl 吗?如果可以,您可以使用创建服务代理的众多工具之一来创建 DTO。如果不能,则没有用于创建 DTO 的架构。您可以使用工具从 JSON 示例创建 DTO,假设该示例包含您将遇到的所有 DTO。
  • 没有wsdl。 :-(

标签: java c# json web-services wcf


【解决方案1】:

有多种选项可将 JSON 数据自动转换为 Java 对象。一些选项是:

  • Jackson - 注释 Java 类和字段以将它们链接到 JSON 架构。
  • Google GSON - 可以创建简单的 toJson() 和 fromJson() 方法来将 Java 对象转换为 JSON,反之亦然。无需修改源代码即可与现有类一起使用。
  • JSON.org - 不将 JSON 直接映射到您的 Java 类,但提供对 JSONObject 和 JSONArray 类的解析,以便轻松使用 JSON。

更多答案可以在这个问题中找到:How to parse JSON in Java

编辑 以上所有内容都需要手动创建 Java 对象,然后将它们链接到 JSON 表示。相反,如果您想自动创建与 C# 对象对应的 Java 对象,我不知道有什么方法可以自动完成,但是,JSONSchema2POJO 工具将从 JSON 样本生成 Java POJO,因此可能为您节省一些时间。

【讨论】:

  • 谢谢理查德。杰克逊在某种程度上解决了我的问题。但仍然有一些手动步骤。如果我能够完全自动化,将发布。
猜你喜欢
  • 2012-05-10
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多