博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贡献一个极简的Post请求发送JSON请求的工作类(亲测有效。其余网上其他都是好多不能用)...
阅读量:6166 次
发布时间:2019-06-21

本文共 3795 字,大约阅读时间需要 12 分钟。

一、今天发现了需要用到一个Post,来发送JSON请求的工具类,找了蛮多网上的东西,想找一个简介好用的,一直找不到。那么就自己写一个咯。

二、假设你想发送一个这样的请求:

http.post{    "jsonrpc":"2.0",    "id":int32,    "method":"Chain33.GenSeed",    "params":[{
"lang":int32}] }

三、你想收到这样的一个请求

response{    "id":int32,    "result":    {        "seed": "fit lava clock valley leisure kit sketch voice venue ski eye apart unfair inch page cannon"    }}

四、首先需要引入一个包: com.squareup.okhttp3

这里写图片描述

com.squareup.okhttp3
okhttp
3.10.0

五、首先定义了一个接口

/** * @author:wangdong * @description:调用区块链那边的Service */public interface BlockchainService {
/** * 调用区块链那边,获取生成公钥和私钥的Seed * @return */ String getBlockchainSend();}

六、定义一个实现类

@Override    public String getBlockchainSend() {        List list = new ArrayList<>();        SeedParams seedParams = new SeedParams();        seedParams.setLang(1);        list.add(seedParams);        Map
params = new HashMap<>(); params.put("jsonrpc", "2.0"); params.put("id", 1); params.put("method", "Chain33.GenSeed"); params.put("params", list); String jsonBody = JSONObject.toJSONString(params); JSONObject result = httpService.postCall(apiBlockchainervice,jsonBody); JSONObject seedDate = (JSONObject) result.get("result"); return seedDate.get("seed").toString(); }}

七、定义一个postCall接口

package com.gws.utils.webservice;import com.alibaba.fastjson.JSONObject;/** * @author wangdong */public interface HttpService {
/** * Http服务间调用,Json的请求 * @param baseUrl * @param jsonBody * @return */ JSONObject postCall(String baseUrl, String jsonBody);}

八、定义一个postCall的实现类

package com.gws.utils.webservice.impl;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.gws.utils.http.HTTP;import com.gws.utils.webservice.HttpService;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import java.io.IOException;/** * Created by wangdong on 7/18/16. */public class HttpServiceImpl implements HttpService {
@Autowired private HTTP http; /** * Http服务间调用,Json的请求 * @param baseUrl * @param jsonBody * @return */ @Override public JSONObject postCall(String baseUrl, String jsonBody) { if (StringUtils.isEmpty(baseUrl)){ throw new IllegalArgumentException("远程调用请求错误,baseUrl不能为空"); } JSONObject jsonObject = null; try { byte[] bytes = post(baseUrl, jsonBody); return JSON.parseObject(new String(bytes)); } catch (IOException e) { } return jsonObject; }}

九、看一下 byte[] bytes = post(baseUrl, jsonBody);是怎么实现的

/**     *      * POST极简同步方法,JSON内容     *      * @author wangdong 2016年7月17日     * @param url     * @param jsonBody     * @return     * @throws HttpGwsException     * @throws IOException     */    @Override    public  byte[] post(String url, String jsonBody) throws HttpGwsException,IOException {        RequestBody body = RequestBody.create(MEDIA_JSON, jsonBody);        Request request = new Request.Builder()                                        .url(url)                                        .post(body)                                        .build();        Response response =ReqExecute(request);        if (!response.isSuccessful()) {            throw new HttpGwsException(response,"exception code:" + response.code());        }        return response.body().bytes();    }

十、RequestBody引用的是com.squareup.okhttp3中的包。

好啦,来测试一些。
这里写图片描述

这里写图片描述

最后返回出来的结果:
这里写图片描述

十一、返回出去

@RequestMapping("getBlockchainSend")    public JsonResult getBlockchainSend(){        String result = blockchainService.getBlockchainSend();        return success(result);    }

十二、最终结果

这里写图片描述

十三、祝大家工作顺利开心。

你可能感兴趣的文章
互联网的魅力
查看>>
ActiveMQ接受byte消息正确姿势。
查看>>
JFrog Mission Control 2.0
查看>>
netbeans快捷键大全
查看>>
NSOperation 异步 或 同步 实例
查看>>
简单聊聊Qos—优先级队列 PQ
查看>>
一个人,一座城,一生心疼
查看>>
cocos2dx-Lua中出现的问题
查看>>
Windows密码抓取神器mimikatz2.0发布
查看>>
java foreach实现原理
查看>>
CentOS7 Broadcom无线网卡驱动安装
查看>>
ArrayList和数组之间互转
查看>>
【学以致用】小公司网管的福音第一季
查看>>
java synchronized详解
查看>>
Hystrix 的设计思想
查看>>
Centos6.5 安装 Docker
查看>>
shell基础练习笔记
查看>>
MAX 巧用across参数实现界面按钮的均匀排列
查看>>
JVM获得锁的一般步骤
查看>>
网址收藏
查看>>