不能将 WCF SOAP 服务 return JSON 作为输出吗?
Can't a WCF SOAP service return JSON as output?
历史
我基本上是一名前端 (android) 开发人员,从未创建过 Web 服务
相反,我处于消费端。
现在这个 WCF 业务是压倒性的,我相信非常复杂,学习曲线陡峭。
任务
我需要制作一个简单的 SOAP 服务,hello world 目前需要一个输入 XML,但是 RETURN JSON。
我不确定为什么我们在 Internet 上没有类似的查询,这让我想知道这是否根本不可能?。
这就是我目前所拥有的。
当前进度
我的合同
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
String GetMessage(String name);
}
我的合同实施
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 headers 并且默认发送 XML mime 类型?
- 我将如何测试 returns JSON 的 WCF 服务?我有任何测试客户端吗?我下载了一个名为 Wizdler 的 Chrome 扩展,但出于某种原因它只适用于绑定 "basicHttpBinding"。有人告诉我,如果我想制作 SOAP 服务,则不能使用此绑定。
如果你们能指出正确的方向,我将非常感激。另外,我在这个 web 服务集会上只有 2 天大,所以我为我的天真道歉。
SOAP 完全依赖 XML 来提供消息服务,所以如果您真的 want/need 到 return JSON 那么您需要将它包装在 CDATA 中SOAP XML 正文。然而,与 SOAP 不同的是,REST 不必使用 XML 来提供响应,因此您可以以其他格式输出数据,例如 JSON.
http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/
您可能需要考虑使用 WCF
来提供 REST
-ful 服务,而不是基于 SOAP
的服务。
历史
我基本上是一名前端 (android) 开发人员,从未创建过 Web 服务 相反,我处于消费端。 现在这个 WCF 业务是压倒性的,我相信非常复杂,学习曲线陡峭。
任务
我需要制作一个简单的 SOAP 服务,hello world 目前需要一个输入 XML,但是 RETURN JSON。
我不确定为什么我们在 Internet 上没有类似的查询,这让我想知道这是否根本不可能?。
这就是我目前所拥有的。
当前进度
我的合同
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
String GetMessage(String name);
}
我的合同实施
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 headers 并且默认发送 XML mime 类型?
- 我将如何测试 returns JSON 的 WCF 服务?我有任何测试客户端吗?我下载了一个名为 Wizdler 的 Chrome 扩展,但出于某种原因它只适用于绑定 "basicHttpBinding"。有人告诉我,如果我想制作 SOAP 服务,则不能使用此绑定。
如果你们能指出正确的方向,我将非常感激。另外,我在这个 web 服务集会上只有 2 天大,所以我为我的天真道歉。
SOAP 完全依赖 XML 来提供消息服务,所以如果您真的 want/need 到 return JSON 那么您需要将它包装在 CDATA 中SOAP XML 正文。然而,与 SOAP 不同的是,REST 不必使用 XML 来提供响应,因此您可以以其他格式输出数据,例如 JSON.
http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/
您可能需要考虑使用 WCF
来提供 REST
-ful 服务,而不是基于 SOAP
的服务。