2014-09-25 166 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