【发布时间】:2015-02-05 20:47:50
【问题描述】:
历史
我基本上是一个前端 (android) 开发人员,从不需要创建 Web 服务 相反,我处于消费端。 现在这个 WCF 业务势不可挡,而且我认为学习曲线非常复杂。
任务
我需要创建一个简单的 SOAP 服务,暂时是 hello world,它需要输入 XML,但返回 JSON。
我不确定为什么我们在互联网上没有类似的查询,这让我想知道这是否根本不可能?
这是我到目前为止所拥有的。
当前进度
我的合同
[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,因为我使用的是带有 HTTP 标头的 WCFStorm 小提琴并默认发送 XML mime 类型?
- 如何测试返回 JSON 的 WCF 服务?我有任何测试客户吗?我下载了一个名为 Wizdler 的 Chrome 扩展,但由于某种原因,它只适用于绑定“basicHttpBinding”。有人告诉我,如果我想创建一个 SOAP 服务,我不能使用这个绑定。
如果你们能指出我正确的方向,我真的很感激。另外,我在这个网络服务大会上只有 2 天大,所以我为我的天真道歉。
【问题讨论】:
-
您不必二选一。 WCF 服务可以配置为返回 SOAP 、XML 或 JSON,具体取决于客户端的请求。
-
@EZI OP 的要求是通过 SOAP 返回 json。
-
@TomRedfern 我不这么认为。这将需要两种反序列化,一种用于soap,一种用于json(就像在另一个xml中返回一个xml)。为什么会有人想做?可以更好地返回纯soap或xml或json的服务(可以由http协议的Accept标头确定)吗?
-
@TomRedfern 想到了一种服务,它可以像使用soap 的传统Web 服务一样,同时使用restful 服务或xml-rpc 服务。是的,WCF 可以做到。
-
@EZI Tom 是正确的。我想通过 SOAP 做 JSON。我现在意识到这是一个反常现象。我实际上是整个行业的新手。所以我犯了这个初学者的错误。我已经纠正了我的做法。我正在通过 JSON 做 REST
标签: c# web-services wcf rest soap