HttpClient 提交 JSON数据
常见数据格式
application/x-www-form-urlencoded
这也是最常见的 POST 提交数据的方式,一般是用来提交表单。multipart/form-data
上传文件时通常采用的数据格式application/json
API接收和返回的常见格式text/xml
可能还有一些数据交换的场景采用的格式
关于 HttpContent
HttpContent 是一个抽象类
public abstract class HttpContent: IDisposable
{
protected HttpContent();
public HttpContentHeaders Headers
{
get;
}
public Task CopyToAsync(Stream stream, TransportContext context);
public Task CopyToAsync(Stream stream);
public void Dispose();
public Task LoadIntoBufferAsync();
public Task LoadIntoBufferAsync(long maxBufferSize);
public Task < byte[] > ReadAsByteArrayAsync();
public Task < Stream > ReadAsStreamAsync();
public Task < string > ReadAsStringAsync();
protected virtual Task < Stream > CreateContentReadStreamAsync();
protected virtual void Dispose(bool disposing);
protected abstract Task SerializeToStreamAsync(Stream stream, TransportContext context);
protected internal abstract bool TryComputeLength(out long length);
}
那我们就不可能直接创建HttpContent的实例, 而需要去找他的实现类, 如下四个:
MultipartFormDataContent、FormUrlEncodedContent、StringContent、StreamContent
和4中常见数据格式对应一下:
MultipartFormDataContent =》 multipart/form-data
FormUrlEncodedContent =》 application/x-www-form-urlencoded
StringContent =》 application/json等
StreamContent =》 binary
HttpClient 提交Json 数据
在谈如何处理JSON前,插入一个form表单提交的示例代码
//请求Body
var body = new Dictionary <string,string> ()
{
{
"from", "sender"
},
{
"to", "receiver"
}
};
HttpContent content = new FormUrlEncodedContent(body);
var response = client.PostAsync(apiAddress, content).Result;
这里也考虑仿照表单提交的情况,有个特殊格式的HttpContent 继承类,接收一个对象变量
json本质上还是一种特殊的字符串格式,我们可以 在StringContent的基础上创建一个子类,接收对象变量,转换成字符串,增加application/json
的表头信息
创建一个新的类
public class JsonContent : StringContent
{
public JsonContent(object obj) :
base(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")
{ }
}
HttpClient 提交 JSON数据的更多相关文章
- ngResource提交json数据如何带参数
ngResource提交json数据如何带参数 直接使用ngResource和REST服务接口交互可以让程序显得简洁,前提是配置好跨域和OPTIONS请求的支持,与此同时,如果需要带些额外的参数,有两 ...
- Jquery Ajax 提交json数据
在MVC控制器(这里是TestController)下有一个CreateOrder的Action方法 [HttpPost] public ActionResult CreateOrder(List&l ...
- Jquery-ajax()方法提交json数据
1.ajax()提交json数据代码 var strJson = getStrPayJson(); $.ajax({ type: "POST", url: "/userc ...
- ajax提交json数据到后端C#解析
本文链接:https://blog.csdn.net/qq_22103321/article/details/78015920 前端提交json数据 $.ajax({ type: "post ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- 导出excel时,以form方式提交json数据
今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式f ...
- jQuery提交Json数据到Webservice,并接收返回的Json数据
jQuery ajax webservice:get 和 post 一.GET 方式 客户端 复制代码 代码如下: var data = { classCode: "0001"}; ...
- 关于ajax 进行post提交 json数据到controller
首选需要参考的两个博客: www.cnblogs.com/Benjamin/archive/2013/09/11/3314576.html http://www.cnblogs.com/quanyon ...
- HttpClient发送Json数据到指定接口
项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return ...
- iOS通过ASIHTTPRequest提交JSON数据
先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且 ...
随机推荐
- 自研ORM框架实现工作单元模式
平时我们使用事务,需要显示的Try Catch 并且开启事务 提交事务 异常回滚事务 三步骤,使用工作单元后则只需要Commit. 1.接口定义 1 /// <summary> 2 /// ...
- CH334H与GL85x功能对比(过流检测与电源控制说明)
CH334H与GL85x功能对比 CH334H是符合 USB2.0 协议规范的高性能MTT 4 端口 USB2.0 HUB 控制器芯片,高ESD特性,工业级设计,外围精简,可应用于计算机和工控机主板 ...
- [机器学习] PCA主成分分析原理分析和Matlab实现方法
转载于http://blog.csdn.net/guyuealian/article/details/68487833 网上关于PCA(主成分分析)原理和分析的博客很多,本博客并不打算长篇大论推论PC ...
- 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 PY32F0系列上市其实相 ...
- 超详细解锁Webpack步骤,踩坑记录
webpack 核心 entry: 入口 output: 输出 loader: 模块转换器,用于把模块原内容按照需求转换成新内容 插件(plugins): 扩展插件,在webpack构建流程中的特定时 ...
- 【高并发】AQS中的CountDownLatch、Semaphore与CyclicBarrier用法总结
CountDownLatch 概述 同步辅助类,通过它可以阻塞当前线程.也就是说,能够实现一个线程或者多个线程一直等待,直到其他线程执行的操作完成.使用一个给定的计数器进行初始化,该计数器的操作是原子 ...
- Java基础1-1-5—java基础语法(idea开发工具)
5. 开发工具 5.1 idea中项目结构 project(项目.工程) module(模块) package(包) class(类) 一个项目中可以存在多个模块多个模块中,存放项目不同的业务功能代码 ...
- 包装类总结-Collection集合概述
包装类总结 1.基本数据类型对应的包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterbo ...
- Asp.Net Core中利用过滤器控制Nginx的缓存时间
前言 Web项目中很多网页资源比如html.js.css通常会做服务器端的缓存,加快网页的加载速度 一些周期性变化的API数据也可以做缓存,例如广告资源位数据,菜单数据,商品类目数据,商品详情数据,商 ...
- statefulset详解及为何结合headless service部署有状态应用
1.1 有状态应用管理statefulset StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序,比如在进行SpringCloud项目容器化时,Eureka的部 ...