Http Post发送json序列请求(json序列化和反序列化)

HTTP+POST +JSON 实现第三方接口调用 1、最近要做一个从第三方接口获取数据的功能,以前这块接触的少,一边摸索一边尝试,终于把功能做了出来,废话不多说,直接上代码,代码使用的包也附上(真的很讨厌晚上那些放代码不放引包的行为) import java.io.IOException; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMe 阅读详情

项目中竟然遇到了这样的问题,要求客户端请求的方式为:参数按照json序列化,然后使用post方式传递给服务器。第一次看到这个东东有点一头雾水,刚开始开发的时候全部使用的get请求方式,因为当时公司不考虑数据安全问题。后来使用了post方式,使用到了session。这下倒好接触了序列化json,然后post方式提交。

首先需要引用谷歌的gson.jar文件,这里面有一些序列化参数的方法,我用到的比较简单直接使用了tojson(类名字);   定义最外层的类PostArgs:

public class PostArgs {

	public BaseRequest baseRequest;
	
	public String newsId;
}
里面嵌套BaseRequest类,

public class BaseRequest {

	public String action;
	
	public String version;
	
	public UserInfo userInfo;
}
接着是第三层UserInfo类:

public class UserInfo {

	public String userId;
	
	public String userName;
}

在主程序里测试为:

		PostArgs postArgs = new PostArgs();
		BaseRequest baseRequest = new BaseRequest();
		UserInfo userInfo = new UserInfo();
		userInfo.userId = "walker";
		baseRequest.action = "getAction";
		baseRequest.version = "1.1.1";
		postArgs.baseRequest = baseRequest;
		postArgs.newsId = "1000.1";
		baseRequest.userInfo = userInfo;
		Gson gson = new Gson();
		
		System.out.println(gson.toJson(postArgs));
输出结果为:
{"baseRequest":{"action":"getAction","userInfo":{"userId":"walker"},"version":"1.1.1"},"newsId":"1000.1"}


这样就完成了json的序列化。接下来就是把序列化的数据以post的方式提交给服务器了。

	/*
	 * post请求, 
	 */
	public static String post(String httpUrl, String parMap,Context context)
	{
		System.out.println("post:"+httpUrl);
		InputStream input = null;//输入流
		InputStreamReader isr = null;
		BufferedReader buffer = null;
		StringBuffer sb = null;
		String line = null;
		AssetManager am = null;//资源文件的管理工具类
		try {
			/*post向服务器请求数据*/
			HttpPost request = new HttpPost(httpUrl);
			StringEntity se = new StringEntity(jsonArgs);
			request.setEntity(se);
			HttpResponse response = new DefaultHttpClient().execute(request);
			int code = response.getStatusLine().getStatusCode();
			System.out.println("postCode= " + code);
			// 若状态值为200,则ok
			if (code == HttpStatus.SC_OK) {
				//从服务器获得输入流
				input = response.getEntity().getContent();
				isr = new InputStreamReader(input);
				buffer = new BufferedReader(isr,10*1024);
				
				sb = new StringBuffer();
				while ((line = buffer.readLine()) != null) {
					sb.append(line);
				}
			} 
				
		} catch (Exception e) {
			//其他异常同样读取assets目录中的"local_stream.xml"文件
			System.out.println("HttpClient post 数据异常");
			e.printStackTrace();
			return null;
		} finally {
			try {
				if(buffer != null) {
					buffer.close();
					buffer = null;
				}
				if(isr != null) {
					isr.close();
					isr = null; 
				}
				if(input != null) {
					input.close();
					input = null;
				}
			} catch (Exception e) {
				}
		}
		System.out.println("PostData:"+sb.toString());
		return sb.toString();
	}

关键语句就两行:
StringEntity se = new StringEntity(jsonArgs);
request.setEntity(se);

new一个StringEntity,然后把这个当做request的参数设置进去就OK了。

现在客户端基本上返回值基本上也是json格式的值了,post之后返回的字段就可以使用反序列化的方式了。参考http://blog.youkuaiyun.com/walker02/article/details/8105936














Winform调用WebApi接口实现上传和接收JSON数据 Winform调用WebApi接口实现数据同步 阅读详情

相关推荐

[重学Rust]之ureq

本文详细介绍Rust中ureq库的HTTP请求实践,包含环境配置(需serde/serde_json)、请求结构体定义及链式调用方法。重点演示GET/POST请求实现,包括请求头设置、JSON数据处理(使用serde_json宏)和响应反序列化技巧。通过百度页面请求和模拟登录案例,展示ureq简洁高效的API设计,特别适合需要快速构建HTTP请求的Rust开发者。文末附完整代码示例,助力开发者掌握Rust网络请求核心技能。

盹猫的博客 1038

HttpPost 传输Json数据并解析

这里写个测试用例模拟外部调用,通过httppost 传递一个json封装的表单数据。包:import com.alibaba.fastjson.JSON;       import com.alibaba.fastjson.JSONArray;相关总结:http://xp9802.iteye.com/blog/2123450每个json包都不一样,这里主要是fastjson包的用法。@Testpu...

zjxbllg2008的专栏 2951

使用httpclient实现Java跨域HTTP请求与JSON处理

跨域请求是Web开发中经常遇到的问题,主要是由于浏览器的同源策略导致的。同源策略规定,只有当两个URL的协议、域名和端口完全相同时,它们才是同源的,才能互相访问资源。当尝试从不同的源(域名、协议或端口)发起HTTP请求时,就会遇到跨域问题。例如,将JavaScript放在一个域中尝试访问另一个域中的资源,如API接口,由于安全性限制,浏览器默认不允许这样的操作。HTTP客户端库被广泛用于发起HTTP请求以及处理HTTP响应。

weixin_42591413的博客 1272

Http post方式发送json数据

HttpClient模拟get,post请求并发送请求参数(json等) import java.io.IOException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; i

小欣儿的专栏 3万+

钣金件设计规范

为保证折弯 强度,钣金折弯钣金应大于材料的最小折弯半径。在设计U型弯曲件时,两弯曲边最好长度相等,以免弯曲时产品偏 移而产生废品,如果因为结构设计不允许两边一样长,为保证产品在模 具中准确定位,应预先在设计时添加工艺定位孔,特别是多次折弯成 形的零件,必须设计工艺孔为定位基准,以减少累计误差,保证产品 质量,如图2-11所示。凸包是依靠材料的延伸使钣金件形成局部凹陷或凸起的冲压工序凸包与拉深是完全不同的冲压工艺,凸包中材料厚度的改变为费意图性 的,即厚度的少量改变是变形过程中形成的,不是设计指定的要求。

制冷技术咨询与服务的博客 7326

clumsy一款模拟弱网的工具

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果。

klb5555的专栏 2551

理解 HTTP POST 请求:表单与 JSON 数据格式深入解析20231208

HTTP POST 请求是一种常用的网络请求类型,用于向服务器发送数据。它们通常用于表单提交或向 API 传输数据。了解 multipart/form-data 和 application/json 的区别对于处理这些请求至关重要。

Narutolxy的博客 1万+

关于 MCU 芯片外围电路的快速入门介绍

MCU 外围电路的核心是“围绕 MCU 需求,搭建稳定、匹配的外部支撑”,入门阶段无需掌握复杂设计,只需先吃透供电、复位、时钟、IO 驱动、基础通信这五大模块,再逐步扩展存储、显示、传感器等进阶功能。实践中多调试、多参考成熟方案,是快速掌握外围电路设计的关键。码字不易,若觉得本文对你有用,欢迎,相关技术热点时时看🔥🔥🔥​​​…

JiaWen的博客 1644

HttpClient Json请求工具

发送Json请求,结果返回Json. [code="java"] public static JSONObject post(String url,JSONObject json){ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject respon...

fuliang 513

JavaSpringBoot + VUE 相关开发环境配置合集

1.Java环境-JDK安装 参照:Java基础1-环境篇:JDK安装与环境变量配置 Java基础1-环境篇:JDK安装与环境变量配置_第一段代码的博客-优快云博客_jdk 2.Web服务器-Tomcat安装 原创Java服务器Tomcat安装和配置 3.Maven(后面为了项目兼容性,使用了3.0.5版本) 原创Maven安装和配置(Maven3.0.5) 4.nginx 原创nginx轻量级Web服务器安装和配置 5 数据库mysql 原创数据库Mysql安装和配置 ...

第一段代码的博客 3163

28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)

本文详细介绍了如何使用SynMatrix工具链高效设计28GHz SIW带通滤波器,涵盖智能参数预测、多物理场联合优化和加工误差补偿等核心技术。通过实战案例和完整参数模板,帮助射频工程师快速实现毫米波滤波器设计,显著提升工作效率并避免反复迭代。

weixin_29284657的博客 495

发送HTTP请求,调取第三方接口及返回数据的解析获取

发送HTTP请求,调取第三方接口 application/x-www-form-urlencoded 方式 /** * 发送http POST请求 * @param parameter为请求参数 * @return 远程响应结果 */ public static String sendPunlic2GPost(String parameter) { log.info...

Mou_O的博客 1万+

激光焦点动态跟踪技术实战大揭秘:电容式与同轴视觉的巅峰对决

激光焦点动态跟踪技术是保证激光加工质量的关键因素。本文对比评测了电容式和同轴视觉两种主流技术:电容式响应速度快、成本低,适合高速稳定加工环境,但易受电磁干扰;同轴视觉精度高、抗干扰强,适合精密加工和复杂工件,但成本较高且处理速度受限。评测结果表明,企业应根据加工需求、预算和环境选择合适技术。未来该技术将向智能化、多技术融合方向发展,为工业应用提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 124

Golang发送Get和Post请求

Golang发送Get请求和Post请求

sunriseYJP的博客 4737

AutoSAR_BSW高阶 7. Signal Group 信号组

Autosar BSW的高级配置是实现复杂汽车电子系统的关键步骤之一。通过合理配置信号组和使用适当的参数,您可以提高系统性能,确保数据的可靠传输。在本博客中,我们深入探讨了信号组的概念和高级配置参数,并提供了示例代码,希望这些信息能够帮助您更好地理解和应用Autosar BSW的高级配置。如果您在配置过程中遇到任何问题,不妨寻求专业支持,以确保您的汽车电子系统能够顺利运行。Autosar COM 模块是一个广泛应用于汽车行业的关键技术,它使不同的电子控制单元能够有效地通信和协作。

一直在水些技术小文 662

YOLOv13改进:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

BiLevelRoutingAttention方法对小目标检测效果比较好。可能是因为BRA模块是基于稀疏采样而不是下采样,一来可以保留细粒度的细节信息,二来同样可以达到节省计算量的目的。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1435

python token发送请求_使用Python发送请求

本节内容#requests安装requests使用JSON类型解析requests库详解带安全认证的请求序言#上节课我们学习了接口测试的理论,抓包工具及使用Postman手工测试各种接口,这节课我们主要讲解使用Python语言来发送接口请求,实现接口测试自动化。发送请求,我们这里主要使用Python的一个第三方包(需要先安装):requests。Python3自带的http.client和urll...

weixin_39950824的博客 1556

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Http POST网络请求

using System.IO; using System.Net; using System.Text; /// <summary> /// POST网络请求 /// </summary> public class HTTPNetTool { /// <summary> /// 网络请求...

什么风把您给吹来了 1058

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python接口篇-Requests

python接口篇-Requests

清微的博客 5875

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java 的接口get和post请求

1.post请求 public static List<FumeMinuteData> getNewDates(List<Integer> ids) { try { ArrayList<FumeMinuteData> fumeMinuteData = new ArrayList<>(); HashMap<String, Object> map = new HashMap<>(); map.put("ids",i

weixin_44178762的博客 671

xhr返回值_数据交互 http请求 xhr

web浏览器通过http请求来获取服务器的数据或服务,http请求是一种无状态连接,用完即关闭,再用需重连接。这么设计能极大地减轻服务器压力。HTTP请求:一个http请求分为以下7个步骤:1,建立TCP连接2,浏览器向服务器发送请求命令3,浏览器想服务器发送请求头信息4,服务器响应5,服务器发送响应头信息6,服务器向浏览器发送数据7,服务器关闭TCP连接HTTP请求之请求request:一个ht...

weixin_32538033的博客 2563

java请求servlet,[Java]Servlet发送Post请求

演示实例:AServlet发送一个Student对象到BServlet#### 1.AServlet部分首先造一个学生stu,然后通过fastjson的`toJSONString`方法把对象转换成字符串,再通过MyHttpUtils的`sendPost`方法把数据发送到BServlet核心部分是`MyHttpUtils`类,还用到了`fastjson.jar`包```java@WebServlet...

weixin_36431195的博客 729

【亲测免费】 轻松掌握C HTTP POST JSON:一个简单易用的开源示例

轻松掌握C# HTTP POST JSON:一个简单易用的开源示例 去发现同类优质开源项目:https://gitcode.com/ 在现代的Web开发中,HTTP POST请求与JSON数据的交互是极为常见的场景。无论是与API接口通信,还是进行数据的上传与处理,掌握如何使用C#发送HTTP POST请求并处理JSON数据都是一项必备技能。今天,我们将介绍一个简单易用的开源项目,帮助你快速上手C...

gitblog_09705的博客 966

【亲测免费】 C HTTP POST JSON 简单示例

C# HTTP POST JSON 简单示例 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个简单的C#示例代码,展示了如何使用HTTP POST方法发送JSON数据。示例代码中还使用了开源的Newtonsoft.Json库来处理JSON数据的序列化和反序列化。 资源文件内容 C# http post json简单示例:该示例代码展示了如何使用C#的HttpCl...

gitblog_09748的博客 419

Python 操作 json 数据

我们学习必然是为了找到高薪的工作,下面这些。

2401_86343726的博客 1089
上一篇: Android优秀开源项目
下一篇: 【简单项目框架一】Fragment实现的底部导航
Steffen02
博客等级 码龄16年 138粉丝 33原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值