2015-02-05 65 views
6

歷史WCF SOAP服務無法返回JSON作爲輸出嗎?


我基本上是一個前端(機器人)的開發商和從來沒有創建一個Web服務 而我是在消費端。 現在這個WCF業務是壓倒性的,我相信非常複雜的陡峭的學習曲線。

任務


我需要做一個簡單的SOAP服務的hello world暫且將採取輸入XML,但返回JSON。

我不知道爲什麼我們在互聯網上沒有類似的疑問,有沒有讓我想知道它是否不可能呢?

這是我到目前爲止。

目前進展


我的合同

[ServiceContract] 
    public interface IHelloWorldService 
    { 
     [OperationContract] 
     String GetMessage(String name); 
    } 

我的合同默認地將Impl

public string GetMessage(string name) 
     { 
      return "Hello World from " + name + "!"; 
     } 

我的服務配置(Web.Config中,我已經在這個託管服務asp.net網站)

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceTypeBehaviors"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="WebBehavior"> 
      <webHttp defaultOutgoingResponseFormat="Json" /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    <services> 
     <service name="MyWcfServices.HelloWorldService"   behaviorConfiguration="MyServiceTypeBehaviors"> 
     <endpoint address="" binding="wsHttpBinding"  behaviorConfiguration="WebBehavior"  contract="MyWcfServices.IHelloWorldService"/> 
     <endpoint contract="IMetadataExchange"   binding="mexHttpBinding" address="mex"/> 
     </service> 
    </services> 
    </system.serviceModel> 

問題


  1. 是SOAP密切一定到XML?這樣你不能發送JSON作爲輸出?
  2. 是不是真的發送JSON作爲輸出你需要去REST範例?
  3. 我是否每次都得到一個XML,因爲我正在使用帶有HTTP頭的WCFStorm小提琴並默認發送XML MIME類型?
  4. 我將如何測試返回JSON的WCF服務?我有任何測試客戶端嗎?我下載了名爲Wizdler的Chrome擴展程序,但由於某種原因,它只能與綁定「basicHttpBinding」一起使用。我被告知,如果我想創建一個SOAP服務,我不能使用這個綁定。

如果你們能指出我正確的方向,我會感激不盡。此外,我在這個web服務coven僅2天,所以我爲我的天真道歉。

+1

您不必選擇一個。根據客戶端的請求,可以將WCF服務配置爲返回* SOAP,XML或JSON *。 – EZI 2015-02-05 21:39:01

+1

@EZI OP的要求是通過SOAP返回json。 – 2015-02-06 09:47:08

+1

@TomRedfern我不這麼認爲。這需要兩個反序列化,一個用於soap,一個用於json(就像在另一個xml中返回一個xml)。爲什麼有人想要這樣做?服務是否可以更好地返回純SOAP或XML或JSON(可以通過http協議的* Accept *標頭確定)? – EZI 2015-02-06 20:21:15

回答

5

SOAP完全依賴於XML來提供消息傳遞服務,所以如果你真的想/需要返回JSON,那麼你需要將它包裝在SOAP XML體中的CDATA中。但是,與SOAP不同,REST不必使用XML來提供響應,因此您可以使用其他格式(如JSON)輸出數據。

http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/

你可能要考慮使用WCF提供REST -ful服務而不是基於SOAP服務。

https://msdn.microsoft.com/en-us/magazine/dd315413.aspx