繁体   English   中英

WCF服务中具有C#的json?

[英]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创建JSON客户端的信息,请参见“使用WCF JSON Web服务的客户端配置”问题的回答

到目前为止,答案是好的,但是(由于您在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM