簡體   English   中英

從InputStream / String Olingo4獲取Edm

[英]get Edm from InputStream/String Olingo4

在Olingo 2中,我可以這樣做:

Edm metadataEdm = EntityProvider.readMetadata(metadataInputStream, false); //metadataInputStream is java.io.InputStream

根據我在Olingo 4中閱讀的內容,可以執行以下操作:

ODataClient client = ODataClientFactory.getClient();

            String serviceRoot = "http://services.odata.org/V4/Northwind/Northwind.svc";
            EdmMetadataRequest request
               = client.getRetrieveRequestFactory().getMetadataRequest(serviceRoot);

            ODataRetrieveResponse<Edm> response = request.execute();

但是在我的項目中我只能對任何網絡調用使用HTTPClient這意味着我不能使用ODataClient client

HttpClient我可以獲得InputStream 有沒有辦法(如上面針對Olingo 2所示)從Olingo 4的InputStream獲取Edm對象?

是的,在Olingo 4中有一種使用ODataReader進行此操作的ODataReader它在方法Edm readMetadata(InputStream input);接受輸入流Edm readMetadata(InputStream input);

您可以按照以下方式修改上面的代碼以達到相同的結果。

ODataReader reader = ODataClientFactory.getClient().getReader();

String serviceRoot = "http://services.odata.org/V4/Northwind/Northwind.svc/$metadata";

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(serviceRoot);

httpGet.addHeader("Accept", "application/xml"); // Looks like version 4.4.0 of OData client only supports xml format for metadata

HttpResponse response = httpClient.execute(httpGet);
Edm edm = reader.readMetadata(response.getEntity().getContent());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM