0

そのシナリオに適したサンプルが見つかりません。

また、WCF サービスは、大きな JSON 構造を返す必要がある Entity Framework 6.0 を使用していました。今のところ、単純な 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());
            }
    ...

ありがとうございました

4

1 に答える 1

1

はい、できます。このシナリオはうまくいきましたが、rest/json ではなく XML 形式 (WCF SOAP) を使用していましたが、試すことができます。

-soap UI を使用して、soap Envelope がどのように見えるかを把握します。このツールは無料http://www.soapui.org/で、使いやすいです。

-新しい Soap UI プロジェクトを作成し、入力に WSDL アドレスを貼り付けると、アプリケーションは空の XML 要求 (soap エンベロープ) を生成します。

-このアプリからサービスをテストできます

- cfhttp を使用して cf からサービスを呼び出しています。

soap エンベロープを計算し、これを 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#" />
于 2013-09-21T14:35:07.660 に答える