在Java中发送http的post请求,设置请求参数等等
前几天做了一个定时导入数据的接口,需要发送http请求,第一次做这种的需求,特地记一下子,
导包
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
CloseableHttpResponse response;// 响应类,
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(JTR_QUERY_ORDER); //请求url // 转json参数
String paramJson = JSONObject.fromObject(sortedMap).toString();
StringEntity stringEntity = new StringEntity(paramJson,ContentType.create("text/json", "UTF-8"));
httpPost.setEntity(stringEntity); response = httpClient.execute(httpPost); //这种是发送json请求参数的,发送form形式参数的可以通过 SortedMap<String, String> sortedMap = packetRequestParameters(cash, orderNum, authCode, payType, mchId); List<NameValuePair> params = new ArrayList<NameValuePair>(sortedMap.size());
if (!sortedMap.isEmpty()) {
for (Map.Entry<String, String> parameter : sortedMap.entrySet()) {
params.add(new BasicNameValuePair(parameter.getKey(), parameter
.getValue()));
}
}
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); //设置请求头信息可以通过 Map<String, String> headerMap = new HashMap<>();
headerMap.put("X-QF-SIGN", sortedMap.get("sign"));
headerMap.put("X-QF-APPCODE", APP_CODE);//分配给开发者的app_code,开发者的唯一标示 if (!headerMap.isEmpty()) {
for (Map.Entry<String, String> vo : headerMap.entrySet()) {
httpPost.setHeader(vo.getKey(), vo.getValue());
}
} if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 3 请求成功,处理请求结果
if (response != null && response.getEntity() != null) {
String string = EntityUtils.toString(response.getEntity(),"utf-8");
// String unescapeJava = StringEscapeUtils.unescapeJava(string);//java反转义,示例中不需要所以注释了
JSONObject resultObject = JSONObject.fromObject(string);
// 如果是数组类型的话使用 JSONArray resultObject = JSONArray.fromObject(fromBase64);
// log.info("定时导入---->返回数据3: " + resultObject.toString()); // 插入数据 flag = insertJtrOrder(resultObject); }else{ flag = false; log.error("订单定时导入---->系统出错"); } }else{ flag = false; log.error("订单定时导入---->请求失败"); }
CloseableHttpResponse response;// 响应类,
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(JTR_QUERY_ORDER); //请求url
// 转json参数
String paramJson = JSONObject.fromObject(sortedMap).toString();
StringEntity stringEntity = new StringEntity(paramJson,ContentType.create("text/json", "UTF-8"));
httpPost.setEntity(stringEntity);
response = httpClient.execute(httpPost);
这种是发送json请求参数的,发送form形式的可以通过
SortedMap<String, String> sortedMap = packetRequestParameters(cash, orderNum, authCode, payType, mchId);
List<NameValuePair> params = new ArrayList<NameValuePair>(sortedMap.size());
if (!sortedMap.isEmpty()) {
for (Map.Entry<String, String> parameter : sortedMap.entrySet()) {
params.add(new BasicNameValuePair(parameter.getKey(), parameter
.getValue()));
}
}
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
设置请求头信息可以通过
Map<String, String> headerMap = new HashMap<>();
headerMap.put("X-QF-SIGN", sortedMap.get("sign"));
headerMap.put("X-QF-APPCODE", APP_CODE);//分配给开发者的app_code,开发者的唯一标示
if (!headerMap.isEmpty()) {
for (Map.Entry<String, String> vo : headerMap.entrySet()) {
httpPost.setHeader(vo.getKey(), vo.getValue());
}
}
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 3 请求成功,处理请求结果
if (response != null && response.getEntity() != null) {
String string = EntityUtils.toString(response.getEntity(),"utf-8");
// String unescapeJava = StringEscapeUtils.unescapeJava(string);//java反转义,示例中不需要所以注释了
JSONObject resultObject = JSONObject.fromObject(string);
// log.info("JTR订单定时导入---->返回数据3: " + resultObject.toString());
// 插入数据
flag = insertJtrOrder(resultObject);
}else{
flag = false;
log.error("JTR订单定时导入---->系统出错");
}
}else{
flag = false;
log.error("JTR订单定时导入---->请求失败");
}
大概就是这样,以后有别的东西再补充把
在Java中发送http的post请求,设置请求参数等等的更多相关文章
- Java中发送http的get、post请求
近期做项目中,须要把消息通过中间件的形式通过http请求的方式推送给第三方,因此用到了http协议,小编花费了一个多小时.对于http协议中的post和get请求,封装了一个工具类.以下与大家分享一下 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- java中发送http请求的方法
package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...
- java中如何模拟真正的同时并发请求?
有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...
- JAVA中发送电子邮件的方法
JAVA中发送邮件的方法不复杂,使用sun的JavaMail的架包就可以实现. 一.下载JavaMail的架包,并导入项目中,如下: 二.附上代码例子,如下: 1.在main函数中对各项参数进行赋值 ...
- java中带图片按钮的大小设置
在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题,那就是按钮的大小默认按照图片的大小来显示,这大大降低了界面的美观程度: 按照方法: JB ...
- Java开发学习(二十四)----SpringMVC设置请求映射路径
一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...
- AFNetworking请求设置请求头
NSString *url = @"INPUT URL HERE"; AFHTTPRequestOperationManager *manager = [AFHTTPRequest ...
- requests模块发送带headers的Get请求和带参数的请求
1.在PyCharm开发工具中新建try_params.py文件: 2.try_params.py文件中编写代码: import requests#设置请求Headers头部header = {&qu ...
随机推荐
- Google 嘘! 嘘!
https://www.gufen.gq(无广告,原guso.ml,ggso.ga,guge.ga) https://c.aiguso.tk (无广告,体验良好) https://d.freedo.g ...
- git操作合集
目录 安装 下载 本地配置 创建用户凭证ssh 忽略文件 基础操作 新建仓库 克隆仓库 获取更新 推送更新 查看历史 版本回退 分支 别名 linux服务器 疑难问题 清除历史大文件 安装 下载 下载 ...
- String str = "1,2,3,4,5,6" 如何将这个字符串转换成int数组
String str = "1,2,3,4,5,6"; string[] strS = str.Split(','); int[] num = new int[strS.Lengt ...
- [翻译] GSProgressView
GSProgressView 本人极不推荐使用drawRect的方式来绘制下载进度条,无论机器的性能怎么高,使用drawRect用于绘制图形都是低效的. A cute little circular ...
- linux 下安装ant
1.下载 下载地址:http://ant.apache.org/bindownload.cgi 2.解压 cd /home/work/ant/ tar -zxvf apache-ant-1.8 ...
- Python初学者第二十天 函数(3)-递归函数及练习题
20day 1.递归的返回值: 递归返回值 2.递归的特性: a.必须有一个明确的结束条件 b.每次进入更深一层递归时,问题规模相比上次递归都应有所减少 c.递归效率不高,递归层次过多会导致栈溢出 3 ...
- matlab 黑白格子
有一个生成黑白格子的函数 40 这个参数是改变大小的 img=checkerboard(40)<0.5; figure; imshow(img,[])
- rpc、socket、tcp/udp简要梳理
RPC:远程过程调用(分布式.微服务间的方法调用) HTTP:无状态,每次请求都要发送一个request,服务器响应之后就断掉(http header中的keep-alive指的是tcp) TCP:面 ...
- windows下注册和取消pg服务的命令
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w][-t seconds] [-o optio ...
- A blog about Core Animation and other iOS graphics framework
A blog about Core Animation and other iOS graphics frameworks. https://www.calayer.com/