开发过程中经常进行JSON的传递,在WebApi中传递JSON字串时,会发现服务器端接收到不参数值,看下面代码

服务端:

public void Post([FromBody]string value)
{
LoggerHelper.Info("Post:{0}", value);
}

客户端:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string url = "http://api.oa.com/api/Test/Post"; var json = "{ \"Name\": \"Test\" }";
var httpContent = new StringContent(json, Encoding.UTF8);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsJsonAsync(url, httpContent).Result;
if (!response.IsSuccessStatusCode)
{
Response.Write(string.Format("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
}

运行客户端,查看服务端的日志,结果为“Post:”,调用成功,但参数接收失败。

查了些资料,显示WebApi不支持JSON字串做为简单参数传递,既然如此就将JSON字串做为复杂类型进行传,对代码稍做调整,服务端接收JObject参数:

public void Post([FromBody]JObject value)
{ LoggerHelper.Info("Post:{0}", value.ToString());
}

客户端:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string url = "http://api.oa.com/api/Test/Post"; var json = "{ \"Name\": \"Test\" }";
var jObject = JObject.Parse(json);
var response = client.PostAsJsonAsync(url, jObject).Result;
if (!response.IsSuccessStatusCode)
{
Response.Write(string.Format("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
}

运行客户端,再次查看服务端的日志,结果为:

Post:{
"Name": "Test"
},参数传递成功

WebApi传递JSON参数的更多相关文章

  1. Spring MVC(七)--传递JSON参数

    有时候参数的传递还需要更多的参数,比如一个获取用户信息的请求中既有用户ID等基本参数,还要求对查询结果进行分页,针对这种场景,一般都会将分页参数封装成一个对象,然后将它和基本参数一起传给控制器,为了控 ...

  2. c# HttpWebRequest 模拟HTTP post 传递JSON参数

    //HTTP post   JSON 参数        private string HttpPost(string Url, Object ticket)        {            ...

  3. curl 使用 post 请求,传递 json 参数,下载文件

    curl -X POST http://ip:8888/nacos/v1/cs/file/download -H "Accept: application/octet-stream" ...

  4. Asp.Net WebAPI传递json对象、后台手动接收参数

    1.前台代码 /* * 跨域请求Post * 1个对象参数,后台JObject接受 */ $.post(apiUrl.getOne("PostFourth"), { name: } ...

  5. 原生态ajax 传递json参数到服务器端

    案例说明:通过ajax将用户名和密码以json形式传递给服务器端,然后服务器端接受数据,进行处理返回json数据到前端 首先,在客户端,通过JavaScript脚本将页面表单数据封装成JSON格式.L ...

  6. HighChart 体验之旅 (后台传递JSON参数和数据的方法)

    转自:http://www.cnblogs.com/daviddai/archive/2013/04/12/Highchart.html 官网:http://www.highcharts.com/ 中 ...

  7. WebAPI接收JSON参数注意事项

    运行环境:ASP.NET 4.5.2. 当我们向GlobalConfiguration.Configuration.MessageHandlers添加一个DelegatingHandler派生类后,很 ...

  8. curl_init raw传递json参数

    protected function curl_vm_record($url, $platform, $authorization, $jsonStr) { $ch = curl_init(); cu ...

  9. ajax传递json参数

    var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...

随机推荐

  1. Metadata Lock原理5

    [MySQL] 之一2015-09-05 15:46:51 分类: MySQL 一 简介 和MySQL打交道比较多的朋友,肯定遇到过 "Waiting for table metadata ...

  2. mysql索引详解,摘自《MySQL 5权威指南》

    本文介绍了数据库索引,及其优.缺点.针对MySQL索引的特点.应用进行了详细的描述.分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用.本文摘自< ...

  3. eclipse 如何使用svn

    1.安装:安装包或输入网址 2.点打开透视图,点svn右键,新建网络地址 3.更新svn,检出svn即可

  4. Android(java)学习笔记110:ScrollView用法

    理论部分 1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 3.上述两个控件可以互相嵌套 4. ...

  5. ASP.NET MVC and jqGrid 学习笔记 1-基本配置

    新建一个mvc项目后

  6. SQL Server select into/bulkcopy用法

    select into/bulkcopy用法 一.背景 如何提升批量插入效率,各位看官,瞧好了! exec sys.sp_dboption '数据库名','select into/bulkcopy', ...

  7. LeetCode 263

    Ugly Number Write a program to check whether a given number is an ugly number. Ugly numbers are posi ...

  8. [改善Java代码]正确使用String,StringBuffer,StringBuilder

    CharSequence接口有三个实现类与字符串有关:String,StringBuffer,StringBuffer.虽然它们都与字符串有关,但是其处理机制是不同的. String类是不可改变的量, ...

  9. IP地址,子网掩码、默认网关,DNS理论解释

    在网上发现的这篇文章写的非常好,有理论有示例. (一)  问题解析 001.   问:  IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不 ...

  10. C# Windows Service服务的创建和调试

    前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...