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进行了封装,并且 ...
随机推荐
- CH392/CH395常见问题解决方法指南
CH395 问题 1: CH395 初始化失败.解答: 1.首先检查"check_exist"命令,正常情况下 CH395 会将该命令的输入值按位取反后输出,若该命令不正常,则说明 ...
- vsftp安装文档
vsftp安装文档 张京坤 20190325 ftp安装 安装环境:centOS7.6 安装vsfptd 在线安装:服务器联网状态下 检查是否安装了vsftpd:rpm -qa |grep vsftp ...
- python 之路 37 Navicat 可视化软件使用、 pymysql模块使用
多表查询的两种方法 方式1:连表操作 inner join 内连接 select * from emp inner join dep on emp.dep_id=dep.id; 只连接两张表中公有的数 ...
- [深度探索C++对象模型]关于成员初始化列表(member initiallization list)
四种特殊情况: 1.当初始化一个reference member时. 2.当初始化一个const member时. 3.当初始化一个base class的constructor,而它拥有一组参数时. ...
- three.js一步一步来--如何画出一个转动的正方体
基础知识--正方体代码如下 <template> <div style="width:1000px; height:800px"> <h1>正方 ...
- python实战-基于正交实验(工具:allpairs)自动生成接口异常测试用例
实现思路 1.抓取api信息(目前公司用的swagger),uri.method.params.response,解析完成后写入excle 2.读取抓取完毕的api信息,处理为allpairs所需要的 ...
- Unreal学习笔记2-绘制简单三角形
目录 1. 概述 2. 详论 2.1. 代码实现 2.2. 解析:Component 2.3. 解析:材质 2.4. 解析:包围盒 2.5. 解析:Section 3. 其他 4. 参考 1. 概述 ...
- dapr本地托管的服务调用体验与Java SDK的Spring Boot整合
1 简介 之前在文章<dapr入门与本地托管模式尝试>中介绍了dapr和本地托管,本文我们来介绍如果在代码中使用dapr的服务调用功能,并把它整合到Spring Boot中. Dapr服务 ...
- 平台工程101:Dev、Sec和Ops的自动化黏合剂
国际权威知名调研机构 Gartner 在<2023年最重要的10个技术趋势>报告中将平台工程(Platform Engineering)列为高速发展的技术趋势之一,并预测到2026年80% ...
- Selenium Webdriver驱动自管理
Webdriver驱动自管理 背景 在selenium自动化中,驱动和浏览器有一定的对应关系,以最常见的chrome和firefox为例. chrome 要求比较严格. 比如在地址栏输入chrome: ...