WebApi传递JSON参数
开发过程中经常进行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参数的更多相关文章
- Spring MVC(七)--传递JSON参数
有时候参数的传递还需要更多的参数,比如一个获取用户信息的请求中既有用户ID等基本参数,还要求对查询结果进行分页,针对这种场景,一般都会将分页参数封装成一个对象,然后将它和基本参数一起传给控制器,为了控 ...
- c# HttpWebRequest 模拟HTTP post 传递JSON参数
//HTTP post JSON 参数 private string HttpPost(string Url, Object ticket) { ...
- curl 使用 post 请求,传递 json 参数,下载文件
curl -X POST http://ip:8888/nacos/v1/cs/file/download -H "Accept: application/octet-stream" ...
- Asp.Net WebAPI传递json对象、后台手动接收参数
1.前台代码 /* * 跨域请求Post * 1个对象参数,后台JObject接受 */ $.post(apiUrl.getOne("PostFourth"), { name: } ...
- 原生态ajax 传递json参数到服务器端
案例说明:通过ajax将用户名和密码以json形式传递给服务器端,然后服务器端接受数据,进行处理返回json数据到前端 首先,在客户端,通过JavaScript脚本将页面表单数据封装成JSON格式.L ...
- HighChart 体验之旅 (后台传递JSON参数和数据的方法)
转自:http://www.cnblogs.com/daviddai/archive/2013/04/12/Highchart.html 官网:http://www.highcharts.com/ 中 ...
- WebAPI接收JSON参数注意事项
运行环境:ASP.NET 4.5.2. 当我们向GlobalConfiguration.Configuration.MessageHandlers添加一个DelegatingHandler派生类后,很 ...
- curl_init raw传递json参数
protected function curl_vm_record($url, $platform, $authorization, $jsonStr) { $ch = curl_init(); cu ...
- ajax传递json参数
var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...
随机推荐
- Python integer objects implementation
http://www.laurentluce.com/posts/python-integer-objects-implementation/ Python integer objects imple ...
- RedHat Enterprise Linux下配置yum源(尝试过的可行方案)
转自:http://bbs.51cto.com/thread-861410-1.html 一.在linux 6.1中本地yum源配置:首先编辑yum源配置文件我们可以再这个目录中新创建一个配置文件,v ...
- python(6)-类
面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对 ...
- [改善Java代码]正确使用String,StringBuffer,StringBuilder
CharSequence接口有三个实现类与字符串有关:String,StringBuffer,StringBuffer.虽然它们都与字符串有关,但是其处理机制是不同的. String类是不可改变的量, ...
- [改善Java代码]减少HashMap中元素的数量
在系统开发中我们经常会使用HashMap作为数据集容器,或者是用缓冲池来处理,一般很稳定,但偶尔也会出现内存溢出的问题(OutOfMemory错误),而且这经常是与HashMap有关的.而且这经常是与 ...
- ConcurrentHashMap和Hashtable区别
Hashtable:synchronized是针对整张Hash表的,即每次锁住整张表让线程独占安全的背后是巨大的浪费 ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以 ...
- python中那些双下划线开头得函数和变量--转载
Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __x ...
- white-space:nowrap 的妙用
对于多个元素同在同一行的布局,如比较常见的是轮播.下面我将探讨这这一布局的做法: 首先约定html结果如下: div.row div.col div.col div.col ... 做法一: 设定di ...
- MongoDB - Installing MongoDB on Windows
1. 在 http://www.mongodb.org/downloads 选择下载所需的版本. 2. 执行 msi 安装包,可通过 Custom 选项,选择安装目录. 3. 创建数据目录.Mongo ...
- Remote Desktop Connection Manager介绍
Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主要开发者 Julian Burger开发的一个远程桌面管理工具.简称为R ...