2014-09-25 167 views
2

我正在尝试使用WCF & NTLM身份验证编写用于Restful Web服务的Java客户端。用java客户端消费WCF restful webservice?

我能够使用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文本转换为业务对象(手动创建的类)。

是否有人知道如何自动化业务对象类创建和自动响应解析器,以便将Json文本转换为java对象,因为我们使用像Axis/CXF这样的框架来使用基于SOAP的Web Service?

+1

您是否问过解析器是否已经存在,它将JSon文本直接解析为Java对象?或者你是否要求从服务的WSDL模式创建代理类?如果服务公开了SOAP和REST端点,则可以通过将'?wsdl'附加到服务的URL来获取WSDL。生成的DTO应该同时适用于REST和SOAP端点 – 2014-09-25 07:29:34

+0

我需要一个框架来在调用REST调用时基于从Raw JSon文本到DTO的服务和转换器生成DTO。 SOAP服务没有公开 – thangamanikasi 2014-09-25 08:08:30

+0

但是* *可以通过将'?wsdl'附加到服务URL来获得WSDL,例如像'http://host/service.svc?wsdl'?如果可以的话,您可以使用创建服务代理的许多工具之一来创建DTO。如果你不能,那么没有模式来创建你的DTO。假设样本包含您将遇到的所有DTO,您可以使用工具从JSon样本创建DTO。 – 2014-09-25 08:33:18

回答

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,因此可以为您节省时间一段时间。

+0

感谢理查德·杰克逊解决了我的问题达到了一定的水平,但仍然有一些手动步骤,如果我能够完全自动化,我会发布。 – thangamanikasi 2014-10-01 03:45:38