簡體   English   中英

調用 wcf 休息服務並以 xml 或 json 形式返回數據

[英]call a wcf rest service and return data as xml or json

我正在嘗試從 WCF REST 服務獲取數據,以作為 xml 或 json 返回。

在使用 WebInvoke 屬性設置 RequestFormat 和 ResponseFormat 並將兩者設置為適當的格式時,我可以將數據作為 xml 或 json 返回:

但我不想對格式進行硬編碼,所以在網上進一步研究了它,我發現了一些東西,但無論我做什么,它似乎總是以 xml 格式返回我的數據。

這是我所做的:

  1. 從 WebInvoke 屬性中刪除了 RequestFormat 和 ResponseFormat。

     [OperationContract] [WebInvoke( Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "Search/{searchName}/{fieldValues}")] Result Search(string searchName, string fieldValues);
  2. 我在 web.config 中添加了以下部分:

     <system.serviceModel> <standardEndpoints> <webHttpEndpoint> <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/> </webHttpEndpoint> </standardEndpoints> </system.serviceModel>

    我不知道是否需要上述內容,因為我能夠在沒有在我的 web.config 中使用這兩種格式的情況下進行格式化,但我想,它確實說的是 automaticaFormat

  3. 調用WebClient ,我將Content-TypeAccept標頭都設置為application/xml或`application/json。

    但即使在進行這些更改並將我的標頭設置為application/json ,它仍然以 XML 形式返回數據。

    我在 Fiddler 中嘗試過,但同樣的事情。 收到請求,返回響應,但在 xml 中。

  4. 我也嘗試將以下代碼放入調用 WCF 方法中,但仍然不行:

     WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
  5. 最后,我找到了這篇文章並按照我所知道的步驟進行了操作,但再次不行! 只需查找“消息格式選擇部分”。

我顯然錯過了一些東西,但是什么??? 有沒有人對如何實現這一目標有任何想法?

你所要求的是我今天實際實現的。 我需要創建一個 RESTful 服務來提供 JSON 或 XML 作為回報。 它是特定於域的,但如果您在兩行之間閱讀以下博客,則顯示了如何通過 MemoryStream 返回類型實現此目的:

http://www.j4jayant.com/articles/fhir/22-fhir-feel-2

在 GetResourceFeed 函數中,您可以看到如何使用請求中的 Accept 值在 JSON 和 XML(原子)之間切換。 請隨意嘗試。

暫無
暫無

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

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