JSON с C # в службе WCF? - PullRequest
       3

JSON с C # в службе WCF?

1 голос
/ 12 февраля 2011

Я смотрю, как добавить возможности SMS в мой сервис WCF.Я нашел дешевый SMS-сервис под названием Penny SMS .

Их интерфейс поддерживает json .Но я понятия не имею, как это вызвать в моей службе WCF.

Вот интерфейс / пример:

Пример запроса JSON-RPC

{ "method": "send",
  "params": [
            "YOUR_API_KEY",
            "msg@mycompany.com",
            "5551231234",
            "Test Message from PENNY SMS"
            ]
}

Как бы я назвал это с C # из службы WCF?То, что я ищу, - это способ обернуть это в вызов метода.Что-то вроде:

StaticSMSClass.SendSMS("1234567890", "My Message to send");

Обратите внимание, что они также поддерживают XML-RPC API , если это более выполнимо из C #.

ОБНОВЛЕНИЕ: я сделал попытку созданияПозвони мне, но это не сработало.Я опубликую свою попытку в отдельном вопросе и посмотрю, есть ли у кого-нибудь способ сделать это.

Ответы [ 4 ]

5 голосов
/ 12 февраля 2011

Вам необходимо отправить HTTP POST с сообщением JSON на удаленный сервер. Вы можете сделать это с помощью HttpWebRequest . Вы либо создаете JSON вручную (сообщения кажутся простыми), либо определяете типы для него и используете сериализатор JSON .

MSDN имеет пример , для вашего случая это будет выглядеть примерно так (не проверено):

string json = // Your JSON message
WebRequest request = WebRequest.Create ("http://api.pennysms.com/jsonrpc");
request.Method = "POST";
var postData = Encoding.UTF8.GetBytes(json);
request.ContentLength = postData.Length;
request.ContentType = "text/json";
using(var reqStream = request.GetRequestStream()) 
{
    reqStream.Write(postData);
}
using(var response = request.GetResponse())
{
    // Response status is in response.StatusCode
    // Or you can read the response content using response.GetResponseStream();
}
2 голосов
/ 28 февраля 2011

Ответы пока хорошие, но есть еще одна вещь, которой вы можете воспользоваться (поскольку вы находитесь в службе WCF) - это использование DataContractJsonSerializer.

В частности, я имею в виду, как вы фактически заполняете свой JSON в первой строке примера driis.

string json = // Your JSON message 

Теперь одним из лучших способов сделать это может быть создание нового класса с этими членами:

[DataContract]
class SomeType 
{
    [DataMember]
    string method;
    [DataMember]
    string[] params;
}

Затем просто создайте экземпляр SomeType каждый раз и сериализуйте его в JSON, используя DataContractJsonSerializer каждый раз, когда вы хотите отправить часть данных. См. http://msdn.microsoft.com/en-us/library/bb412179.aspx о том, как использовать автономный DataContractJsonSerializer.

Надеюсь, это поможет!

2 голосов
/ 12 февраля 2011

См. мой ответ на вопрос "Конфигурация клиента для использования веб-службы JSON WCF" , чтобы узнать, как создать клиент JSON с WCF.

1 голос
/ 12 февраля 2011

Проверьте API WCF REST. Они служат JSON, может быть, они также могут отправлять JSON (во внутреннем решении WCF это работает). Возможно, вам нужно создать контракт в wsdl для запуска службы, но, возможно, это сработает.

...