有人能告诉我Coldfusion 8是否可以使用WCF服务?

时间:2013-09-20 19:10:11

标签: wcf coldfusion

我无法找到适合该情况的任何好样本。

此外,WCF服务使用了Entity Framework 6.0,它应返回大型JSON结构。 现在我只是想找到一个可以调用简单WCF服务的简单示例:

[ServiceContract]
public interface ITest
{
    [OperationContract(Name = "Test_GetDate")]
    [WebGet(UriTemplate = "/GetDate", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string GetDate();
...

        public class Test : ITest
        {
            public string GetDate()
            {
                return (DateTime.UtcNow.ToString());
            }
    ...

谢谢

1 个答案:

答案 0 :(得分:1)

是的,它可以。这个场景对我有用,但我使用的是XML格式(WCF SOAP)而不是rest / json,但你可以试试。

- 我使用soap UI来弄清楚肥皂信封应该是什么样子。此工具免费http://www.soapui.org/,易于使用。

创建新的Soap UI项目并在输入中粘贴WSDL地址,应用程序将生成空的XML请求 - soap信封。

- 您可以通过此应用测试您的服务

- 我正在使用cfhttp从cf:

调用服务

我们想出了肥皂信封,我们把它放在cf变量中:

    <cfsavecontent variable="soapBody">

        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ozon="http://schemas.datacontract.org/blah/prc">
           <soapenv:Header/>
           <soapenv:Body>
              <tem:myservicemethod>
                 <tem:someParameter1>This is my first param</tem:someParameter1>
                 <tem:someParameter2>
                    <blah:AC>This is my second parameter</blah:AC>
                 </tem:someParameter2>
              </tem:myservicemethod>
           </soapenv:Body>
        </soapenv:Envelope>                         

    </cfsavecontent>    

现在调用服务。我从Ben Nadel的博客中挖掘出来:http://www.bennadel.com/blog/1809-Making-SOAP-Web-Service-Requests-With-ColdFusion-And-CFHTTP.htm

    <cfhttp
         url="http:/SomeService/Service.svc"
         method="post"
         result="httpResponse">
             <!---
             TIP : Look into your WSDL to figure out SOAPAction value
             --->                        
        <cfhttpparam
             type="header"
             name="SOAPAction"
             value="http://tempuri.org/SomeService/myservicemethod"
             /> 
        <cfhttpparam
             type="header"
             name="accept-encoding"
             value="no-compression"
             />          
        <cfhttpparam
             type="xml"
             value="#trim( soapBody )#"
             />
    </cfhttp>   


<cfdump var="#httpResponse#" />