Конфигурация клиента для использования веб-службы WCF JSON

Я настроил веб-службу на использование Json, как описано в этом блоге: http://www.west-wind.com/weblog/posts/164419.aspx и различные другие блоги, но я не мог создать клиента, чтобы потреблять этот оказание услуг. Я пробовал разные вещи, но неизменно получал бессмысленные исключения. Каков правильный способ реализации клиента (WCF, который я должен добавить)?

Кажется, есть нехватка примеров о том, как написать WCF-клиент для службы JSON REST. Кажется, что для использования службы WCF используется WCF, но вряд ли когда-либо для написания клиента. Итак, вот довольно полный пример сервиса (реализация запроса GET и POST) и клиента.

обслуживание

Сервисный интерфейс

[ServiceContract] public interface IService1 { [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/getcar/{id}")] Car GetCar(string id); [OperationContract] [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/updatecar/{id}")] Car UpdateCar(string id, Car car); } 

Структуры служебных данных

 [DataContract] public class Car { [DataMember] public int ID { get; set; } [DataMember] public string Make { get; set; } } 

Реализация услуг

 public class Service1 : IService1 { public Car GetCar(string id) { return new Car { ID = int.Parse(id), Make = "Porsche" }; } public Car UpdateCar(string f, Car car) { return car; } } 

Разметка услуги

 <%@ ServiceHost Language="C#" Service="JSONService.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 

Web.config

                    

клиент

А теперь клиент. Он повторно использует интерфейс IService1 и class Car . Кроме того, требуется следующий код и конфигурация.

App.config

                

Program.cs

 public class Service1Client : ClientBase, IService1 { public Car GetCar(string id) { return base.Channel.GetCar(id); } public Car UpdateCar(string id, Car car) { return base.Channel.UpdateCar(id, car); } } class Program { static void Main(string[] args) { Service1Client client = new Service1Client(); Car car = client.GetCar("1"); car.Make = "Ferrari"; car = client.UpdateCar("1", car); } } 

Повеселись.

Каковы исключения? Они могут быть бессмысленными для вас, но кто-то здесь может найти их полезными для диагностики вашей проблемы. Я использую jQuery, чтобы сделать запрос ajax для службы WCF, и настройка обычно выглядит следующим образом:

  $(document).ready(function() { $.ajaxSetup({ type: "POST", processData: true, contentType: "application/json", timeout: 5000, dataType: "json" }); var data = { "value": 5 }; AjaxPost("GetData", data, OnEndGetData, OnError); }); function OnEndGetData(result) { alert(result.GetDataResult); } function OnError(msg) { alert(msg); } function AjaxPost(method, data, callback, error) { var stringData = JSON.stringify(data); var url = "Service1.svc/" + method; $.ajax({ url: url, data: stringData, success: function(msg) { callback(msg); }, error: error }); } 

JSON.stringify () можно найти в скрипте json.org: http://www.json.org/js.html , а мой метод для метода GetData выглядит так:

 [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] string GetData(int value); 
  • Как изменить исходное XML-сообщение Исходящего запроса CXF?
  • Как вручную установить веб-сервис на Tomcat 6?
  • Шаги по созданию веб-службы с использованием Axis2 - Код клиента
  • Каков правильный способ отправки файла из веб-сервиса REST клиенту?
  • Каковы различия между веб-службами WCF и ASMX?
  • Установка HttpContext.Current.Session в модульном тесте
  • Как передать массив JSON в качестве параметра в URL-адресе
  • В чем разница между веб-методом asp.net и службой wcf?
  • Лучший способ поддерживать данные «application / x-www-form-urlencoded» с WCF?
  • JAX-WS = Когда Apache CXF установлен, он «крадет» стандартную реализацию JDK JAX-WS по умолчанию, как ее решить?
  • Тестирование веб-сервисов REST
  • Давайте будем гением компьютера.