2011-02-12 82 views
1

我正在寻找添加短信功能到我的WCF服务。我发现了一个名为Penny SMS的廉价短信服务。JSON与C#在WCF服务?

其接口支持json。但我不知道如何在我的WCF服务中调用它。

下面是接口/例如:

样品JSON-RPC请求

{ "method": "send", 
    "params": [ 
      "YOUR_API_KEY", 
      "[email protected]", 
      "5551231234", 
      "Test Message from PENNY SMS" 
      ] 
} 

我怎么会说这就是从一个WCF服务的C#?我正在寻找的是一种将它包装到方法调用中的方法。喜欢的东西:

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

注意,他们也支持XML-RPC API如果是从C#更加可行。

更新:我刺伤了自己创建一个调用,但它没有奏效。我将在单独的问题中发布我的尝试,看看是否有人有办法做到这一点。

回答

5

您需要发送带有JSON消息的HTTP POST到远程服务器。你可以用HttpWebRequest来做到这一点。您可以手动构建JSON(消息看起来很简单),或者为其定义类型并使用JSON serializer

MSDN has an example,为您的情况下,它看起来是这样的(未经测试):

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(); 
} 
+0

关心危害如何做到这一点的一个例子? – Vaccano 2011-02-13 05:23:25

1

检查WCF REST API。他们提供JSON,也许他们也可以发送JSON(在WCF内部解决方案中工作)。也许你必须在wsdl中构建合同以使服务正常运行,但也许它运行正常。

2

请参阅my answer到问题“客户端配置消耗WCF JSON Web服务”了解如何使用WCF创建JSON客户端。

2

到目前为止的答案都很好,但您可以利用的另外一件事(因为您在WCF服务中)是使用DataContractJsonSerializer。

尤其是,我指的是如何在Driis示例的第一行中实际填充JSON。现在

string json = // Your JSON message 

,要做到这一点的最佳途径之一可能是创建与这些成员的新类:

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

然后,只需创建每次SOMETYPE的一个实例,并将其序列化到JSON每次你想发送一段数据时使用DataContractJsonSerializer。有关如何使用DataContractJsonSerializer独立的信息,请参阅http://msdn.microsoft.com/en-us/library/bb412179.aspx

希望这会有所帮助!