[英]json with C# in a WCF service?
我正在向WCF服务中添加SMS功能。 我找到了一种便宜的SMS服务,称为Penny SMS 。
他们的接口支持json 。 但是我不知道如何在我的WCF服务中调用它。
这是界面/示例:
样本JSON-RPC请求
{ "method": "send",
"params": [
"YOUR_API_KEY",
"msg@mycompany.com",
"5551231234",
"Test Message from PENNY SMS"
]
}
我如何使用WCF服务中的C#调用它? 我正在寻找的是一种将其包装到方法调用中的方法。 就像是:
StaticSMSClass.SendSMS("1234567890", "My Message to send");
请注意,如果C#更可行,它们还支持XML-RPC API 。
更新:我尝试自己创建一个电话,但是没有用。 我将在一个单独的问题中发布我的尝试,看看是否有人可以做到这一点。
您需要将带有JSON消息的HTTP POST发送到远程服务器。 您可以使用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();
}
到目前为止,答案是好的,但是(由于您在WCF服务之内)您可以利用的另一件事是使用DataContractJsonSerializer。
特别是,我在driis示例的第一行中提到了如何实际填充JSON。
string json = // Your JSON message
现在,执行此操作的最佳方法之一可能是使用这些成员创建一个新类:
[DataContract]
class SomeType
{
[DataMember]
string method;
[DataMember]
string[] params;
}
然后,每次创建一个SomeType实例,并在每次要发送数据时使用DataContractJsonSerializer将其序列化为JSON。 有关如何独立使用DataContractJsonSerializer的信息,请参见http://msdn.microsoft.com/zh-cn/library/bb412179.aspx 。
希望这可以帮助!
检查WCF REST API。 他们提供JSON,也许他们也可以发送JSON(在WCF内部解决方案中它可以工作)。 也许您必须在wsdl中构建合同以使服务运行,但也许可以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.