001 okhttp3的POST使用
继续使用上面的项目
1.被调用的项目
package com.jun.web2forokhttp.okhttp; import com.jun.web2forokhttp.bean.HttpDomain;
import org.springframework.web.bind.annotation.*; import java.util.HashMap;
import java.util.Map; @RestController
public class PostReq {
@PostMapping(value = "/post/getInfo")
@ResponseBody
public HttpDomain getInfo(@RequestBody HttpDomain httpDomain){
HttpDomain useHttpDomain =new HttpDomain();
useHttpDomain.setType(httpDomain.getType()+"-post");
useHttpDomain.setAge(httpDomain.getAge()+10);
return useHttpDomain;
}
}
bean:
package com.jun.web2forokhttp.bean; import lombok.Data; @Data
public class HttpDomain {
private String type;
private String name;
private String age;
}
2.调用的程序
package com.jun.web.okhttp; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jun.web.okhttp.bean.HttpDomain;
import com.jun.web.okhttp.bean.HttpResponseDomain;
import okhttp3.*; import java.io.IOException; public class PostHttp {
public static void main(String[] args) throws JsonProcessingException {
formBody();
} /**
* 没有请求头的请求
*/
public static void formBody() throws JsonProcessingException {
HttpDomain httpDomain = new HttpDomain();
httpDomain.setType("1");
httpDomain.setName("tom");
httpDomain.setAge(10);
ObjectMapper objectMapper = new ObjectMapper();
String Json=objectMapper.writeValueAsString(httpDomain); //转JSON String url = "http://localhost:8080/post/getInfo";
OkHttpClient okHttpClient = new OkHttpClient();
MediaType json = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(json,Json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build(); Call call = okHttpClient.newCall(request);
try{
Response response = call.execute();
String result = response.body().string();
System.out.println("post="+result);
HttpResponseDomain httpResponseDomain = objectMapper.readValue(result,HttpResponseDomain.class); //转对象
System.out.println("httpResponseDomain="+httpResponseDomain);
} catch (IOException e) {
e.printStackTrace();
}
}
}
需要的bean
package com.jun.web.okhttp.bean; import lombok.Data; import java.io.Serializable; @Data
public class HttpDomain implements Serializable{
private String type;
private String name;
private int age;
}
package com.jun.web.okhttp.bean; import lombok.Builder;
import lombok.Data; @Data
@Builder
public class HttpResponseDomain {
private String type;
private String age;
private String name;
public HttpResponseDomain(){}
public HttpResponseDomain(String type,String age,String name){
this.type=type;
this.age=age;
this.name=name;
}
// private String name;
}
3.效果
二:注意点
1.RequestBody的数据格式
常见的content-type主要有三种
application/x-www-form-urllencoded
application/form-data
application/json
上文的示例就是json格式。
2.如果数据包含文件
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/png"), file))
.build();
三:同步与异步
1.异步
package com.jun.web.okhttp; import okhttp3.*; import java.io.IOException; public class Asyn {
public static void main(String[] args) {
String url = "https://www.baidu.com/";
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
} @Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println("我是异步线程,线程Id为:" + Thread.currentThread().getId());
}
});
for (int i = 0; i < 10; i++) {
System.out.println("我是主线程,线程Id为:" + Thread.currentThread().getId());
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
效果
001 okhttp3的POST使用的更多相关文章
- Okhttp3的简单使用
1.get请求: /** * *okhttp get请求 * */ public class MainActivity extends AppCompatActivity { private stat ...
- swift 001
swift 001 = 赋值是没有返回值的 所以 int a=10; int b=20; if(a=b){ printf("这个是错误的"); } swift 中的模运算 是支 ...
- okhttp3 post 数据打包方法
import okhttp3.OkHttpClient; import okhttp3.FormBody; import okhttp3.Request; import okhttp3.Request ...
- [SDK2.2]Windows Azure Virtual Network (4) 创建Web Server 001并添加至Virtual Network
<Windows Azure Platform 系列文章目录> 在上一章内容中,笔者已经介绍了以下两个内容: 1.创建Virtual Network,并且设置了IP range 2.创建A ...
- Retrofit2 + OkHttp3设置Http请求头(Headers)方法汇总
在构建网络层时会遇到一个问题就是要手动配置Http请求的Headers,写入缓存Cookie,自定义的User-Agent等参数,但是对于有几十个接口的网络层,我才不想用注解配置Headers,目前网 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
<zw版·Halcon-delphi系列原创教程> Halcon分类函数001·3D函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“proce ...
- Android 开发错误信息001
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessExceptio ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- okhttp3教程(1)如何引入库
官网: https://github.com/square/okhttp https://github.com/square/okio 1,使用okhttp3需要两个库 在build.gradle c ...
随机推荐
- [LeetCode] 437. 路径总和 III ☆☆☆(递归)
路径总和 III 描述 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子 ...
- elasticsearch获取字段missing的数据
用head查询: demo如下 http://localhost:9200/sj_0505/lw_point_location/ _search post { "query": { ...
- HDU1213通畅工程-并查集求解
并查集的经典题目. 并查集.经典题目是HDU1232通畅工程. 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标 ...
- MySQL创建用户和加限权
目录 1.权限管理 1.1对新用户增删改 1.2对当前的用户授权管理 1.权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete ...
- linux内核模块编译makefile
linux内核可加载模块的makefile 在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对 ...
- yum升级curl支持http2测试
首先,先为你的服务器获取最新匹配的源:http://mirror.city-fan.org/ftp/contrib/yum-repo/ 方法1,rpm方式安装city-fan.org的yum源 # 安 ...
- HTML&CSS基础-html的图片标签
HTML&CSS基础-html的图片标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如下图所示,准备一张图片,存放路径和html文件在同一目录 二.HTML源代码 ...
- Synchronized偏向锁和轻量级锁的升级
原文:https://blog.csdn.net/tongdanping/article/details/79647337 锁的优化1.锁升级锁的4中状态:无锁状态.偏向锁状态.轻量级锁状态.重量级锁 ...
- 使用Arduino开发板连接干簧管(Reed Switch)的方法
在现实生活中,干簧管(Reed Switch)有许多重要的应用,如磁性门开关.笔记本电脑.智能手机等.在本篇文章中,我们将了解一些干簧管的知识,并介绍如何使用Arduino开发板连接干簧管. 干簧管( ...
- 使用scrapy框架爬取全书网书籍信息。
爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件 1,创建scrapy项目 scrapy startproject numberone 2,创建爬虫主程序 ...