【问题标题】:json with C# in a WCF service?在 WCF 服务中使用 C# 生成 json?
【发布时间】:2011-02-12 17:08:50
【问题描述】:

我正在考虑向我的 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");

请注意,如果使用 C# 更可行的话,它们还支持 XML-RPC API

更新:我自己尝试创建呼叫,但没有成功。我将在一个单独的问题中发布我的尝试,看看是否有人有办法做到这一点。

【问题讨论】:

    标签: c# wcf json xml-rpc


    【解决方案1】:

    您需要将带有 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();
    }
    

    【讨论】:

    • 请举一个例子来说明如何做到这一点?
    • 可以应用wcf安全吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      特别是,我指的是在 driis 示例的第一行中实际填充 JSON 的方式。

      string json = // Your JSON message 
      

      现在,最好的方法之一可能是创建一个包含这些成员的新类:

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

      然后,只需每次都创建 SomeType 的实例,并在每次要发送一条数据时使用 DataContractJsonSerializer 将其序列化为 JSON。请参阅http://msdn.microsoft.com/en-us/library/bb412179.aspx 了解如何单独使用 DataContractJsonSerializer。

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        检查 WCF REST API。他们提供 JSON,也许他们也可以发送 JSON(在内部 WCF 解决方案中有效)。也许您必须在 wsdl 中构建合同才能使服务运行,但也许它会成功。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多