历史
我基本上是一名前端 (android) 开发人员,从未创建过 Web 服务 相反,我处于消费端。 现在,这个 WCF 业务势不可挡,我相信它非常复杂,而且学习曲线陡峭。
任务
我需要制作一个简单的 SOAP 服务,hello world 目前需要一个输入 XML,但返回 JSON。
我不确定为什么我们在互联网上没有类似的查询,这让我想知道这是否根本不可能?。
这是我目前所拥有的。
目前的进展
我的契约(Contract)
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
String GetMessage(String name);
}
我的契约(Contract)实现
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>
问题
- SOAP 是否与 XML 紧密相关?这样您就无法将 JSON 作为输出发送?
- 要将 JSON 作为输出发送,您是否需要转至 REST 范式?
- 我是否每次都收到 XML,因为我使用 WCFStorm fiddles 和 HTTP header 并默认发送 XML mime 类型?
- 如何测试返回 JSON 的 WCF 服务?我有任何测试客户端吗?我下载了一个名为 Wizdler 的 Chrome 扩展,但出于某种原因,它只适用于绑定(bind)“basicHttpBinding”。有人告诉我,如果我想制作 SOAP 服务,则不能使用此绑定(bind)。
如果你们能指出我正确的方向,我将非常感激。此外,我在这个网络服务集会上只有 2 天大,所以我为我的天真道歉。
最佳答案
SOAP 完全依赖 XML 来提供消息服务,因此如果您真的想要/需要返回 JSON,那么您需要将它包装在 SOAP XML 主体的 CDATA 中。然而,与 SOAP 不同的是,REST 不必使用 XML 来提供响应,因此您可以输出其他格式的数据,例如 JSON。
http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/
您可能需要考虑使用 WCF
来提供 REST
服务,而不是基于 SOAP
的服务。
关于c# - WCF SOAP 服务不能返回 JSON 作为输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353703/