public static String doPostForJson(String url, String json,String byteAuthorization) {
RestTemplate restTemplate = new RestTemplate(); logger.info("restTemplate invoke post method. url:[{}], json:[{}]", url, json);
long startTime = System.currentTimeMillis();
String result = ""; HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("Byte-Authorization",byteAuthorization); HttpEntity<String> request = new HttpEntity<>(json, headers);
result = restTemplate.postForEntity(url,request,String.class).getBody(); logger.info("restTemplate invoke [{}] consume time is,[{}] ms.", url, System.currentTimeMillis() - startTime);
logger.info("restTemplate invoke post method. result:[{}]", result);
return result;
} /**
* 通过该方式,对方未正确接收到参数
* https://blog.csdn.net/zy_281870667/article/details/87723177
* @param url
* @param json
* @param byteAuthorization
* @return
*/
public static String doPostForJsonOld(String url, String json,String byteAuthorization) {
logger.info("invoke post method. url:[{}], json:[{}]", url, json);
long startTime = System.currentTimeMillis();
String result = "";
HttpClient httpClient = wrapClient(url); StringEntity se = new StringEntity(json, "UTF-8");
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
// se.setContentType(new BasicHeader("Accept", "application/json"));
/**
* 数据格式
* Byte-Authorization: SHA256-RSA2048 appid="ttxxx",nonce_str="DC10180A100073E70A48F195DA2AF2E6",timestamp="1623934869",key_version="1",signature=""'
*/
se.setContentType(new BasicHeader("Byte-Authorization", byteAuthorization));
se.setContentEncoding("UTF-8"); // 创建HttpPost
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(se);
// 执行POST请求
try {
HttpResponse response = httpClient.execute(httpPost);
// 若状态码为200 ok
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取出回应字串
result = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
logger.error("Calling douyin payment interface is abnormal >>> url:[{}], json:[{}]",
url, json, e);
} logger.info("invoke [{}] consume time is,[{}] ms.", url, System.currentTimeMillis() - startTime);
logger.info("invoke post method. result:[{}]", result);
return result;
}

post请求方式 - 使用restTemplate而不使用httpClient,headers.setContentType(MediaType.APPLICATION_JSON_UTF8)的更多相关文章

  1. 第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)

    一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍: 后端调用大约有这些:WebCient.WebRequest.Httpclient.W ...

  2. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939   版权声明 ...

  3. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

  4. android http协议post请求方式

    方式一:HttpPost(import org.apache.http.client.methods.HttpPost 代码如下: private Button button1,button2,but ...

  5. Android之Http通信——3.Android HTTP请求方式:HttpURLConnection

    3.Android HTTP请求方式之HttpURLConnection 引言: 好了,前两节我们已经对HTTP协议进行了学习.相信看完前两节的朋友对HTTP协议相比之前 应该更加熟悉吧.好吧.学了要 ...

  6. Android进阶(一)几种网络请求方式详解

    Ref:http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面 ...

  7. SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用

    1 请求方式 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 1 ...

  8. 航信电子发票开发(servlet请求方式)

    在系统用户交费后,需要打印发票,可以选择普票或者机打票(票据信息在系统中自定义设置的),也可以打印电子发票,这里对接的是航信的电子发票,请求方式非web服务,而是使用servlet通过HTTP请求的方 ...

  9. http状态码+http请求方式

    一.http状态码 2开头 (请求成功)表示成功处理了请求的状态代码. 200   (成功)  服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201   (已创建)  请求成功并且服 ...

  10. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

随机推荐

  1. 基于 Wasm 和 ORAS 简化扩展服务网格功能

    简介: 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中,然后通过 ASM 控制器将 Wasm Filter 部署到指定 ...

  2. dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息

    在 WPF 触摸应用中,插入触摸设备,即可在应用里面使用上插入的触摸设备.在 WPF 使用触摸设备的触摸时,需要获取到触摸设备的信息,才能实现触摸 获取触摸设备插入 在 WPF 中,通过 Window ...

  3. 习题8 #第8章 Verilog有限状态机设计-1 #Verilog #Quartus #modelsim

    1. 设计一个"111"串行数据检测器.要求是:当检测到连续3个或3个以上的"1"时输出为1,其他输入情况下输出为0. (1)思路分析:参照本章前文的范例,如第 ...

  4. Unity热更学习笔记--AB包的依赖 0.98

    AB包的依赖 接上一小结. 在这里我们新建一个红色材质球,赋值给Cube预制体.此时不对材质球进行AB包分类,再次进行打包.运行脚本,发现红色cube成功的从AB包中加载出来.尽管我们没有将cube所 ...

  5. blazor优雅的方式导入组件相关的js脚本

    基本的组件导入方式为: 1 await JsRuntime.InvokeVoidAsync("import", $"XXXXX.js"); 优雅的组件导入方式: ...

  6. InternLM2 Demo实操-书生浦语大模型实战营第二期第2节作业&大语言模型3

    大语言模型-3.InternLM2 Demo实操 书生浦语大模型实战营第二期第二节作业 本文包括第二期实战营的第2课作业的相关内容.本来是想在学习笔记中给InetrnLM官方教程做做补充的,没想到官方 ...

  7. gin 图片上传到本地或者oss

    路由层 func registerCommonRouter(v1 *gin.RouterGroup) { up := v1.Group("upload") { up.POST(&q ...

  8. java后台@RequestBody和@RequestParam

    RequestBody 接收的是请求体里面(body)的数据 RequestParam接收的是key-value里面的参数,所以它会被切割进行处理从而可以是普通元素.数组.集合.对象等接收 get-- ...

  9. Java变量自增表达式 i = i++ 的底层逻辑(简述)

    Java变量自增表达式 i = i++ 的底层逻辑(简述) 前言 很多老师告诉我们,i = i++ 的运算过程是 temp = i; i ++; i = temp; 所以i的值不变.但我总觉得这个te ...

  10. CF933-Div3 大致思路+题解

    \(Rank\) A - Rudolf and the Ticket 纯水题 暴力枚举直接过 $code$ #include<bits/stdc++.h> #define fo(x,y,z ...