Post请求Json格式数据到WCF服务

测试实体类:(需要在客户端和服务端建了有相同字段名称的实体)

public class CompositeType
    {
        public CompositeType()
        {
            SubCompositeTypes = new List<SubCompositeType>() { new SubCompositeType() };
        }
        public bool BoolValue { get; set; }
        public string StringValue { get; set; }
        public List<SubCompositeType> SubCompositeTypes
        {
            get;
            set;
        }
    }
    public class SubCompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }

客户端请求代码:

#region JosnPost
    CompositeType compositeType = new CompositeType
    {
        StringValue = "1",
        BoolValue = false
    };

    DataContractJsonSerializer dcSerializer = new DataContractJsonSerializer(typeof(CompositeType));

    MemoryStream stream = new MemoryStream();

    dcSerializer.WriteObject(stream, compositeType);

    string data = Encoding.UTF8.GetString(stream.ToArray(), 0, (int)stream.Length);

    //HttpClient client = new HttpClient();

    //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    string link = "http://localhost:1766/Service1.svc/CreateUser";

    //HttpResponseMessage respondse = await client.PostAsync(link, new StringContent(data));

    //string dataWithJason = await respondse.Content.ReadAsStringAsync();

    var request = (HttpWebRequest)WebRequest.Create(new Uri(link));
    request.ContentType = "application/json";
    request.Method = "POST";

    using (var requestStream = await request.GetRequestStreamAsync())
    {
        var writer = new StreamWriter(requestStream);
        writer.Write(data);
        writer.Flush();
    }

    using (var resp = await request.GetResponseAsync())
    {
        using (var responseStream = resp.GetResponseStream())
        {
            var reader = new StreamReader(responseStream);
            var result = reader.ReadToEnd();
        }
    }

服务端接口定义:

[OperationContract]
        [WebInvoke(
            UriTemplate = "CreateUser",
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
            Method = "POST")]
        string CreateUser(CompositeType compositeType);

服务端接口实现:

public string CreateUser(CompositeType compositeType)
        {
            return "OK" + compositeType.StringValue + " " + compositeType.BoolValue + " " + compositeType.SubCompositeTypes.FirstOrDefault().StringValue;
        }

由于服务端需要实现REST服务,需要在web.config里重新配置下(cover serviceModel就可以了):

<system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="Server.Service1">
        <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" contract="Server.IService1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="max" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name ="web">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

经测试,在windows runtime项目中也可以用。

时间: 2024-09-24 14:53:20

Post请求Json格式数据到WCF服务的相关文章

SpringMVC环境下实现的Ajax异步请求JSON格式数据_AJAX相关

一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

SpringMVC环境下实现的Ajax异步请求JSON格式数据

一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

django通过ajax发起请求返回JSON格式数据的方法

  本文实例讲述了django通过ajax发起请求返回JSON格式数据的方法.分享给大家供大家参考.具体实现方法如下: 这是后台处理的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 def checkemail(request): user = None if request.POST.has_key('email'): useremail = request.POST['email'] result = {} user = User.objects.filter(usere

如何将ajax请求返回的Json格式数据循环输出成table形式_AJAX相关

首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

如何将ajax请求返回的Json格式数据循环输出成table形式

首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

ajax请求后台,返回json格式数据,模板!

添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下.   <script type="text/javascript">        //加载出部门的信息            function loadGroup(){                            $.ajax({                    type:"post", 

ASP.NET输出JSON格式数据

最近在开发Windows8 Metro App,使用JavaScript和HTML开发环境.所以操作数据绑定都是使用JSON格式数据.后台使用的是ASP.NET,因为项目相对较小,所有 后台没有使用数据库,使用的XML来保存数据.前台需要请求后台返回JSON格式的数据,比如要求返回一个eventslist,后台操作XML的方法省 略.主要讨论如何使用Hashtable和ArrayList,然后加上ASP.NET自带的JavaScriptSerializer来生成JSON数 据,然后返回给前端使用

实例详解JSON数据格式及json格式数据域字符串相互转换_javascript技巧

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 基础结构 JSON建构于两种结构: 1. "名称/值"对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash t

jquery解析json格式数据的方法(对象、字符串)_jquery

本文实例讲述了jquery解析json格式数据的方法.分享给大家供大家参考,具体如下: json数据是我们常用的一种小型的数据实时交换的一个东西,他可以利用jquery或js进行解析,下面我来介绍jquery解析json字符串方法. 一.jQuery解析Json数据格式: 使用这种方法,你必须在Ajax请求中设置参数: dataType: "json" 获取通过回调函数返回的数据并解析得到我们想要的值,看源码: jQuery.ajax({ url: full_url, dataType