Как вызвать веб-сервис WCF с использованием HTTP Get - PullRequest
4 голосов
/ 18 июля 2010

Я хочу вызвать веб-сервис wcf, используя строку запроса URL. Например, если у меня есть webserive, который предоставляет метод ADD для добавления двух целых чисел. Я хочу вызвать этот сервис, используя http://mywebserviceAddress/Add?x=4&y=5

Возможно ли это сделать? Я новичок в веб-сервисах, это может быть очень легко для большинства из вас.

Ответы [ 3 ]

4 голосов
/ 20 июля 2010

Посмотрите, поможет ли вам приведенный ниже пример:

Контракт на обслуживание

[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);
        }
    }

Web config:

<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();
3 голосов
/ 19 июля 2010

Если вы хотите вызвать службу WCF с прямыми HTTP-глаголами, вам нужно создать службу REST WCF, используя webHttpBinding.

Проверьте некоторые ресурсы для этого:

Endpoint.TV скринкасты:

Endpoint.TV в целом имеет очень хорошее освещение для WCF и WCF REST.

0 голосов
/ 18 июля 2010

Это WS, который вы хотите создать или уже существующий, который вы хотите использовать?

Если вы хотите создать его, см. Веб-сервис REST.

Проверьте страницу MSDNдля REST вы найдете статьи, видео, тренинги, примеры кода и т. д. http://msdn.microsoft.com/en-us/netframework/cc950529.aspx

...