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 ...
随机推荐
- JMeter java.net.BindException: Address already in use: connect
原文:https://blog.csdn.net/macwhirr123/article/details/77199057 出现原因:TCP/IP连接数不够或TIME_WAIT中存在很多链接,导致吞吐 ...
- H3C 802.11 MAC层工作原理
- ansible运维工具,dhcp,cobbler
1.借助Ansible Playbook自动化搭建LNMP环境(可借助yum) 通过yum方式安装ansible,先安装epel仓库 yum install epel-release 安装epel仓库 ...
- Mac电脑永久路由的添加方法是是什么? Mac校园网连接教程
学校校园网面向全校师生开放,无奈Windows用户基数大,学校只为Windows平台制作了内网连接工具,Mac平台资源较少,本人查阅相关资料后,总结整理出以下步骤,方便本校学生连接校园网. 有永久路由 ...
- memcached——学习
文章:memcached 常用命令及使用说明 远程清除memcached缓存 使用命令行: telnet 127.0.0.1 11211 连上memcached 然后使用命令:flush_all ...
- selenium常用的API(五)获取title、刷新、前进和后退
获取网页title的属性值 #encoding=utf-8 from selenium import webdriver import unittest import time class Visit ...
- mybatis配置打印sql
mybatis配置打印sql: <settings> <setting name="logImpl" value="STDOUT_LOGGING&quo ...
- Java动态代理演变之路
1.什么是代理? 代理,英文成文Proxy.意思是你不用去做,别人代替你去处理.比如有人想找明星周董去唱歌,他需要做签约.讨论.唱歌和付款等等过程,但真正周董擅长的事情是唱歌,其他的事情可以交代给他的 ...
- c#3.0 Lambda 表达式
使用c# 2.0 中的匿名方法查找“内部包含abc子串的所有字符串”: list.FindAll( delegate(string s) { renturn s.indexof("abc&q ...
- 20199301《Linux内核原理与分析》第十二周作业
ShellShock攻击实验 一.环境搭建 下载 $ sudo su $ wget http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz 安装 $ tar x ...