版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/52130861
项目地址:https://github.com/Arisono/Gradle-demo
/*** @desc:post json数据提交   Header+params+json*/@SuppressWarnings("deprecation")public static void sendHeadersAndJSON() {// 表单提交 这种能满足大部分的需求RequestBody formBody = new FormBody.Builder().add("jsonData", "{\"data\":\"121\",\"data1\":\"2232\"}").add("username", "Arison+中文").add("password", "1111111").build();String postBody = "{\"type\":\"post json提交\"}";String postBody2 = "{\"type2\":\"post json提交\"}";OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://localhost:8080/spring-mvc-showcase/api/getHeaders").header("cookie", "JSESSIONID=EB36DE5E50E342D86C55DAE0CDDD4F6D").addHeader("content-type", "application/json;charset:utf-8").addHeader("Home", "china")// 自定义的header.addHeader("user-agent", "android")// .post(RequestBody.create(MEDIA_TYPE_TEXT, postBody)).post(formBody)// 表单提交.put(RequestBody.create(MediaType.parse("application/json; charset=utf-8"),postBody))// post json提交.put(RequestBody.create(MediaType.parse("application/json; charset=utf-8"),postBody2))// post json提交.build();try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {String json = response.body().string();System.out.println(json);String post = JSON.parseObject(json).getString("postBody");System.out.println("转义之前:" + post);System.out.println("转义之后:" + URLDecoder.decode(post));}} catch (IOException e) {e.printStackTrace();}}/*** @desc:发送请求头以及请求参数 Header+params*/public static void sendHeadersAndParams() {String china_str = "";try {china_str = URLEncoder.encode("中文", "UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}// 表单提交RequestBody formBody = new FormBody.Builder().add("query", "Hello").add("username", "Arison").add("password", "1111111").build();// 第二个表单会覆盖第一个/** RequestBody formBody2 = new FormBody.Builder() .add("search",* "Jurassic Park") .build();*/OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://localhost:8080/spring-mvc-showcase/api/getHeaders").header("cookie", "JSESSIONID=EB36DE5E50E342D86C55DAE0CDDD4F6D").addHeader("content-type", "text/html;charset:utf-8").addHeader("Home", "china")// 自定义的header.addHeader("Home1", china_str)// 自定义的header 传中文.addHeader("user-agent", "android")// .post(RequestBody.create(MEDIA_TYPE_TEXT, postBody)).post(formBody)// .post(formBody2).build();try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {String json = response.body().string();System.out.println(json);}} catch (IOException e) {e.printStackTrace();}}/*** @desc:发送请求头*/public static void sendHeaders() {String china_str = "";try {china_str = URLEncoder.encode("中文", "UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://localhost:8080/spring-mvc-showcase/api/getHeaders").header("cookie", "JSESSIONID=EB36DE5E50E342D86C55DAE0CDDD4F6D").addHeader("content-type", "text/html;charset:utf-8").addHeader("Home", "china")// 自定义的header.addHeader("Home1", china_str)// 自定义的header 传中文.addHeader("user-agent", "android").build();try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {String json = response.body().string();System.out.println(json);String home1 = JSON.parseObject(json).getJSONObject("headers").getString("home1");System.out.println(URLDecoder.decode(home1, "utf-8"));}} catch (IOException e) {e.printStackTrace();}}/*** @dec 基本测试* @throws IOException*/public static void sendBasicRequest() {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://www.baidu.com").build();try {Response response = client.newCall(request).execute();if (!response.isSuccessful()) {// throw new IOException("服务器端错误: " + response);}// 输入响应头Headers responseHeaders = response.headers();for (int i = 0; i < responseHeaders.size(); i++) {System.out.println(responseHeaders.name(i) + ": "+ responseHeaders.value(i));}// 输出响应实体// System.out.println(response.body().string());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

服务器核心方法:

/**接收请求头* @return*/@RequestMapping(value = "/api/getHeaders")private @ResponseBody LinkedHashMap<String, Object>  receiveHeaders(HttpServletRequest request,@CookieValue(value = "JSESSIONID", required = false)String sessionId,@RequestBody String postBody) {LinkedHashMap<String, Object> result=new LinkedHashMap<String, Object>();Map<String, Object> header=new HashMap<String, Object>();Map<String, Object> params=new HashMap<String, Object>();result.put("postBody", postBody);@SuppressWarnings("rawtypes")Enumeration paramNames  =request.getParameterNames();while (paramNames.hasMoreElements()) {String key = (String) paramNames.nextElement();Object value =  request.getParameter(key);params.put(key, value);}result.put("params", params);@SuppressWarnings("rawtypes")Enumeration headerNames = request.getHeaderNames();while (headerNames.hasMoreElements()) {String key = (String) headerNames.nextElement();String value = request.getHeader(key);header.put(key, value);}result.put("headers", header);result.put("JSESSIONID", sessionId);System.out.println(result.toString());return result;}

参考文档:

https://github.com/square/okhttp/wiki/Recipes

Okhttp 向服务器发送请求(请求头,表单,post json数据)...相关推荐

  1. jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

    1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...

  2. 将json数据写入html表单,将json数据提交到html表中

    我需要基于json响应构建一个表,调用API时调用API, 调用API并让JSON工作正常,但我没有发现任何有关构建表的文档并从x.js传递给x.html.我成功地从json传递了1个参数/值.将js ...

  3. Form表单提交JSON数据

    1.定义方法 //定义serializeObject方法,序列化表单 $.fn.serializeObject = function() {var o = {};var a = this.serial ...

  4. 原生html如何发送网络请求,原生JS向服务器发送GET请求

    原生JS向服务器发送GET请求 使用Jquery可以很方便的进行GET与POST请求,但是在开发由于一些特殊原因只能使用原生JS进行开发,向服务器发送请求经常会遇见的些问题,本文主要讲解如何使用原生J ...

  5. jquery向服务器发送ajax请求标准写法

    jquery向服务器发送ajax请求标准写法 $.ajax({url:"url路径", //请求的url地址dataType:"json", //返回的数据格式 ...

  6. java 表单请求_java模拟表单请求

    表单普通字段 public class FormFieldKeyValuePair { private static final long serialVersionUID = 1L; // The ...

  7. 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

    最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...

  8. python post 请求json文件_requests的post请求提交表单、json串和文件数据讲解

    HTTP协议中没有规定post提交的数据必须使用什么编码方式,服务端根据请求头中的Content-Type字段来获取编码方式,再对数据进行解析.具体的编码方式包括如下: - application/x ...

  9. java客户端重复请求_Java后台防止客户端重复请求、提交表单实现原理

    Java后台防止客户端重复请求.提交表单实现原理 发布于 2021-1-8| 复制链接 摘记: 这篇文章主要介绍了Java后台防止客户端重复请求.提交表单实现原理,文中通过示例代码介绍的非常详细,对大 ...

  10. html页面ajax提交数据,ajax请求提交form表单

    AJAX表单提交以及数据接收 方式一 手工收集所有的用户输入,封装为大的"k1=v1&k2=v2-"键值对形式,使用$.post(url, data,fn)把数据提交给服务 ...

最新文章

  1. 群同态基本定理证明_近世代数(3)——群的基本性质
  2. dae模型如何合并_FBX、DAE模型的格式、导入与骨骼动画
  3. 003-代码补全,运行,调试
  4. Post和Get差异
  5. C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组
  6. C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字
  7. MATLAB学习——常用语句
  8. 《Go语言程序设计》 读书笔记 (八) 包
  9. Android面经分享,失业两个月,五一节前拿到offer
  10. 【笔试/面试】数组及其内存结构
  11. 科学实证与理论研究方法
  12. 二、制作BOM表格--物料表格--Bill of Materials
  13. MyBatis-Plus配置全局sql注入器后,BaseMapper中方法失效
  14. 致前行者 | 他们,只用了两公里地铁的钱,就实现了中国探月
  15. 计算机表格斜杠怎么打,如何在excel表格中绘制斜线并上下打字
  16. oracle 物化视图 on demand,oracle物化视图的两个典型应用场景
  17. 查看 PCD 点云 windows
  18. 西北大学计算机转专业,2021年西北大学大一新生转专业及入学考试相关规定
  19. np.isfinite_带有Python示例的math.isfinite()方法
  20. 计算机技术发展作文,【推荐】科技发展作文三篇

热门文章

  1. asp.net ajax实现在线人员的显示
  2. sql server 2000的数据库还原
  3. JAVA设计模式-适配器模式(Adapter)
  4. Python深入理解元组与列表的使用和区别
  5. Linux进度条的实现
  6. python请输出如下图形的程序_编写一个python程序,输出如下图形效果。
  7. 软件测试——测试分类
  8. layui让文字和div平行_layui富文本的使用注意事项以及拓展
  9. 如何在一年内从零基础到前端就业?
  10. N - C语言实验——各位数字之和排序