如何使用HTTP Get调用WCF Web服务

时间:2010-07-18 17:34:47

标签: .net wcf http web-services

我想使用url查询字符串调用wcf webservice。就像我有一个webserive暴露ADD方法添加两个整数。我想使用http://mywebserviceAddress/Add?x=4&y=5

来调用此服务

是否可以这样做。我是webservices的新手,对大多数人来说这可能很容易。

3 个答案:

答案 0 :(得分:4)

看看以下示例是否可以帮助您:

服务合同

[ServiceContract] 
public interface IService1 
{ 
   [OperationContract] 
   [WebGet(UriTemplate="Add/{x}/{y}",ResponseFormat=WebMessageFormat.Xml)] 
   int Add(string x, string y); 
 }

服务实施:

public class Service1 : IService1
    {
        public int Add(string x, string y)
        {
            return Convert.ToInt32(x) + Convert.ToInt32(y);
        }
    }

网络配置:

<system.serviceModel>
        <services>
            <service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
                <endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="WcfService1.IService1">
                    <identity>
                        <dns value="localhost"/>
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="WcfService1.Service1Behavior">
                    <serviceMetadata httpGetEnabled="false"/>
                    <serviceDebug includeExceptionDetailInFaults="false"/>
                </behavior>
            </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
        </behaviors>
    </system.serviceModel>

客户代码:

WebRequest request = WebRequest.Create("http://localhost:2156/Service1.svc/Add/2/3");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine("Request to add numbers: ");
            Console.WriteLine("Request status: " + response.StatusDescription);
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine("Response: \n" + responseFromServer);
            Console.ReadLine();

答案 1 :(得分:3)

如果要使用直接HTTP谓词调用WCF服务,则需要使用webHttpBinding创建WCF REST服务。

查看一些资源:

Endpoint.TV截屏视频:

Endpoint.TV通常对WCF和WCF REST的内容有很好的报道。

答案 2 :(得分:0)

它是您要构建的WS还是您想要使用的已存在的WS?

如果要构建一个,请参阅REST Web服务。

查看REST的MSDN页面,您会找到文章,视频,培训,代码示例等。 http://msdn.microsoft.com/en-us/netframework/cc950529.aspx